% This is  frplain.sty             
%      of  GUTenberg  (Frenchspeaking TeX Users Group)
%                     (Groupe francophone des Utilisateurs de TeX).
%      by  Bernard GAULLE since 1989.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This file intended for Plain TeX is now definetely frozen. --bg 97/12/11 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%....................................................................  
% Have you registered? if not, fill in the form in frmsgOK file and send it 
% now, otherwise Bernard will never accept your messages requesting help.
%....................................................................  
% Copyright GUTenberg-Bernard Gaulle 1992-1997:
%    - You are NOT ALLOWED to change this file in any way.
%    - You are NOT ALLOWED to take money for the distribution or use of
%      these files except for a nominal charge for copying etc.
%    - Redistribution of these unchanged files is allowed provided that 
%      up to date informations about the GUTenberg association including
%      addresses are distributed in the same package.
%    - You are NOT ALLOWED to include these files in a package/software in
%      a way that will reduce its capabilities or features.
%    - All the files included in the distribution are available freely inside
%      the Internet public domain (and specially on CTAN servers). 
%    - Assuming that there are other files needed to use correctly this
%      French style file (e.g. French hyphenation files),
%>>>>  if you receive this file alone from someone, be careful/complain!
%>>>>  (FOR INSTALLATION: read the printed file ALIRE.dvi in main directory)
%    - There was no virus at the time these files were completed for 
%      distribution.
%    - This computer code is offered in hopes that it will be found useful, 
%      and in the belief that it is correct, but it is offered without any
%      warranty of any kind, including warranty of fitness for any purpose.
%      Users of this code do so entirely at their own risk. The author neither
%      admits nor accepts any liability for any loss, direct, indirect,
%      consequential, incidental, or otherwise, resulting from the use of this
%      computer code.
%    - You are NOT ALLOWED to substitute author's authority by applying
%      modifications even, in your point of view, they correct deficiences.
%    International, European (91-255) and French (94-361) laws apply.
%....................................................................  
% NOTICE that this work was done without any support of any kind.
%        Friendly helps, supports as well as sponsors are welcome!
%....................................................................  
%%
%%      checksum        = "50044 2577 9281 138584"
%%
\expandafter\ifx\csname frenchTeXmods\endcsname\relax%...\ifundefined
\else \endinput \fi%......... \then go ahead \else do nothing \fi
\def\frenchname{french}% this is the name of our language
\def\ds@french{}% this might be usefull if loaded before \document...
\def\ds@pmfrench{\pmfrench}% further defined
%
\newif\ifopenin\openintrue% temporary: OzTeX and VMS have/had \openin pbs
%\def\OPENINPATH{PB}%
\expandafter\ifx\csname OPENINPATH\endcsname\relax% pb \openin in VMS & OzTeX
                          \else\openinfalse\fi%
%
%   french.sty done by Bernard GAULLE for French-Speaking Users as of:
{\catcode`\@=11{%
 \ifx\@unexpandable@protect\undefined\let\protect\empty%
 \else\let\protect\@unexpandable@protect%
 \fi%
                           \xdef\FSfd{29 mai 1997}%
                           \xdef\FSfv{V3,51%
                                          \ifopenin\else (special openin)\fi}%
                           \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}%
}}%
                           \edef\FSfd{1997/05/29 }%
%
%   I started this job years ago (in 1989) firstly 
%   using ideas by Jacques DESARMENIEN, the French pioneer and also by   
%   Eric PICHERAL (CICB, Rennes), Nicolas BROUARD (INED, Paris),
%   Marc SHAPIRO (INRIA, Rocquencourt), Raymond SEROUL (Labo Typo. Strasbourg),
%   Philippe LOUARN (IRISA, Rennes), Olivier NICOLE (INRA, Jouy),
%   Rainer SCH\"OPF (Uni. Mainz), Johannes BRAAMS (PTT, NL) and others.
%   I stopped to collect the names of the good guys in 1991 when i decided
%   to make a seriously enhanced & rewritten distribution i released as V3.0.
%
%   Send suggestions/bug reports/corrections to the author: gaulle@idris.fr
%                 (Bernard Gaulle, 4 av. Cadoux-Girault, F-92270 Bois-Colombes)
%
% Canonical Archive server is: ftp.univ-rennes1.fr (in pub/GUTenberg/french) 
%                              where these files are archived.
% 
% Tested with LaTeX as released on:
\ifx\documentclass\undefined\else\NeedsTeXFormat{LaTeX2e}[1996/12/01]\fi%
%
% This style is using, at most:     
%%<
%%> 577 strings out of 11731 (4.9%); 
%%> 4675 string characters out of 85497 (5.4%); 
%%> 11217 words of memory out of 262141 (4.2%); 
%%> 567 multiletter control sequences out of 9500 (5.9%). 
%
% (I used the big MlTeX version distributed for Ultrix by GUTenberg).
%
% Last updates, starting after releasing version 3,49 (January 28th, 1997):
% ===========
%
% V3,50 \undefine instead of \undefined, as pointed by Jose Grimm
%         at the end of french.                                   --bg 97/02/24
%       New replacement strings (\inferieura, \superieura, etc.)
%         protected against "activation". Pointed by Adrian Rezus
%         with \RomanianTeX.                                      --bg 97/02/25
%       Allow package relsize.sty to be used with french (test 
%         made by C. Labouisse) like smaller.sty                  --bg 97/03/03
%       \footnote didn't accept argument with \par (as reported
%         by Ph. Louarn). \long added in \defs.                   --bg 97/03/05
%       Footnote 11x, 22x, etc. incorrectly typeset. Due to the
%         sequence \if\thefootnote\relax instead of \ifx.
%         (pb reported by F.Boulanger).                           --bg 97/03/06
%       \l@chapter was not defined when AmS code present but should
%         be done only for packages styles. Now defined if AmS 
%         document classes are unused.                            --bg 97/03/07
%       Introduce adapted \hyphenation and \showhyphens macros. Need
%         formats to be recreated, according to the current 
%         distributed initex files, otherwise msg --41-.          --bg 97/03/26
%       Slight internal mod to define \babel@core@loaded
%         as in french.ldf used by babel.                         --bg 97/03/26
%       \DFPinfsup modified, \< and \> doesn't exist.             
%       Loop over \hyphenation, due to \h@yphenation multiply
%         redefined and not restored at language switch.          --bg 97/04/28
% V3,51
%       Fine tuning of kerning and glue by D.B.Roegel on spacing
%         after (opening) and before (closing) french guillemets. D.B.R97/05/07
%       Italic correction before closing guillemets made of usual 
%         \/ now, and only when \guillemetsinroman. Otherwise the
%         italic correction might not be appropriate, as suggested
%         by T. Bouche.                                           
%       \vpageref doesn't provided optional argument as pointed by
%         Ph. Esperet.                                            --bg 97/05/16
%       As of today french is now definitely frozen under Plain TeX
%         with the name frplain.sty.                              --bg 97/05/29
%
% and also check if there is any frpatch.sty file.
%            
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Object: DOCUMENT CLASS OPTION for printing French texts with TeX or LaTeX   %
%         as well as english. (or multilingual texts in which French is the   %
%         main language).                                                     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% It can be called:
%    via    \input french.sty                 with Plain TeX
% or via    \usepackage{french}               with LaTeX
%           (or as an option of Babel)
%[or via    \documentstyle[french]{any_style} with LaTeX 2.09]
%
% Commands to be used by the end users:
% ====================================
% \frenchtest          between \document.... and \end{document} will run
%                      the LaTeX "Torture Test" (see french*.tex files).
% \frenchdoc           between \document..... and \end{document} will compose
%                      the LaTeX documentation (see frenchlu.tex file).
% \french              Apply French conventions including hyphenation, 
%                      typography, page layout, titles inside documents and 
%                      few other things helping when typing a document. 
%                      This is the default language.
% \begin{french}...\end{french} to bind the French text with LaTeX.
% \french ... \endfrench with TeX.
% \pmfrench (preambule command) ... the poor man way
%                      (or \document.....[pmfrench]{...})
%                      to let the French style run even the TeX motor 
%                      (ie format) was not installed or configured in a way to
%                      use the French language (hyphenation, language.dat,...)
%                      Be aware that a lot of things might not provide their
%                      usual featuring. Notice also that then the following
%                      commands do nothing:
%                            - \noeveryparguillemets 
%                            - \lettrine and \flettrine 
%                            - \abbreviations and "..."
%                            - \frhyphex
% \usersfrenchoptions{.. French options ..} to allow the user to change the
%                      default options. All options given inside braces remain
%                      active all along the document.
% \english             for going back to "normal" English conventions
%                      And if you have a language.dat config file defining
%                      german and dutch languages OR you use 
%                      \NouveauLangage[n]{german} and 
%                      \NouveauLangage[p]{dutch}  where n and p are internal
%                      unused language number, then you can type:
% \german              to  switch to German conventions
% \dutch               or to  switch to Dutch conventions or to
% \any_name            (any language created by \NouveauLangage[n]{any_name}) 
% \NouveauLangage[n]{language_name}  (as previously explained) 
%                      define \language_name which will call \language_nameTeX 
%                      assuming that \language_nameTeX is/will be defined
%                      (normally in a style file).
% \beginlanguage       switch in LaTeX to the language that started first after
%                      \begin{document} (depending of the last lang. style opt)
% \beginFWdirection    switch to the first direction of writing when TeX--XeT.
%--------------------
% Commands for compatibility: 
%
% \inferieura          is the original less than sign (<)
% \superieura          is the original greater than sign (>)
% \pointvirgule        is the original ";"
% \deuxpoints          is the original ":"
% \pointexclamation    is the original "!"
% \pointinterrogation  is the original "?"
% \lq  and \rq         stands for `  and  '   
%         ^\prime      stands for ' in maths
% \lqq and \rqq        stands for `` and '' 
% \dittomark           stands for "
%
% \originalinput{file_of_code} is supplied to input any code that might be
%                      incompatible with the French style. 
%                      You can also disable the French style using:
% \begin{nonfrench}...\end{nonfrench} with LaTeX
% \nonfrench..........\endnonfrench   with plain TeX
% \originaloutput[file]{text} is supplied to output any text that would
%                      otherwise generate expanded macros for activated chars
%                      instead of original characters. "file" is a stream
%                      number related to open file defined by \newwrite.
% \def\encodingdefault{...} can be set to "T1" or "OT1" to destroy the default
%                      font encoding that is normally set in the format
%                      (with initex material and specially kbconfig.tex) and
%                      should not be changed any way! Used by NFSS2 too.
%--------------------
% \frhyphex            Reload once French hyphenation exceptions file from
%                         language.dat (give this order in the preambule)
%                         Not usable with plain (or low level languages).
% \frenchhyphenation   Apply French rules on hyphenation:
%                         - as stated in the patterns file
%                         - with exceptions as established by \hyphenation
%                         - of words starting with one upper case letter
% \nofrenchhyphenation Nullify former actions
%
% Other commands for hyphenation that remains unchanged over \french reinit.
%
% \allowuchyph         allow hyphenation of words starting with a capital 
%                            letter (this is the default as in plain & lplain)
% \allowfulluchyph     allow it even if a \hbox would normally forbid it in
%                            the present code.
% \disallowuchyph      forbid it (this is my own recommandation)
% \tthyphenation       allow hyphenation of words in the present \tt font
% \notthyphenation     disallow hyphenation of words in the present \tt font
%                      (never saved; last value in a \par is that which works;
%                       default value is that given by the main doc-style;
%                       presumely the default -if not: tell me \tthyphenation;
%                       this is the default in lplain.tex)
%--------------------
% \frenchtypography    Apply French typography (spacing) on :
%                        - double punctuation ! ? ; :
%                        - guillemets (<< >>). Use \endguillemets instead of >>
%                          for ending 2 levels of guill. at the same time.
%                          Italic correction automatically added if necessary.
%                        - footnote marks in the text and minipages.
%                        - footnote references (\refmark).
%                        - thanks in titles.
%                      Print footnote number in the same font as the footnote
%                          text followed by a dot and appropriate spacing. When
%                          used in table environment footnote marks are typeset
%                          as in a minipage.
%                      Italicize the caption text.
%     Suboption: \unnumberedcaptions{figure/table} to remove headings in
%                          caption tiltles. This is a global suboption. 
%                          It nullify the according \listof...(figures/tables).
%                          It can be used only once. Can't be turned back later
%                          in French.
%                      Hyphenate correctly. (The lowest level of application 
%                                            is the paragraph.)
%                      Discourage page breaking after ``:''
%                      Forbid line breaking before double punctuation and >>
%                                                  and after <<.            
%     Suboption: \noTeXdots will change them to 3 closed dots
%                \TeXdots leave \dots, \ldots as well known TeX dots (default)
%     Suboption: \nofrenchguillemets stops producing French guillemets.
%                \frenchguillemets starts producing French guillemets (default)
%     Suboption: \ancientguillemets start every paragraph of second level 
%                                   guillemets with closing >> instead of <<.
%                \todayguillemets   normal way at the present time (default)
%     Suboption: \guillemetsinallfonts allow to print them in any font but
%                \guillemetsinroman remains the usual default value.
%     Command:   \endguillemets ends levels 2 & 1 at the same time (i.e. >>>>)
%     Suboption: \noenglishquote replace TeX ` ' quotes AND apostrophes 
%                                by accents ` '  (to use only temporary).
%                                Do nothing inside a tabbing environement.
%                                \...code and \char become unusable asis.
%                \englishquote   is the default
%     Suboption: \noenglishdoublequotes for replacing `` with << and '' with >>
%                                Do nothing inside a tabbing environement.
%                                \...code and \char become unusable asis.
%                \englishdoublequotes   normal quoting ``...'' is the default
%     Suboption: \untypedspaces force a space where normally French people
%                               type one (before ; : ? ! >> and after <<)
%                \typedspaces   is the default value
%     Suboption: \tabbingaccents allow to put \` and \' diactrics on letters
%                when used in tabbing environment. \' and \` remain their 
%                original tabbing usage if followed by a blank space.
%                \notabbingaccents is the default value.
%     Suboption: \idotless suppress point on i when accented with ^ and "
%                \iwithdot is the default
%     Suboption: \EBCDICbrackets replace non-math mode < ... > by [ ... ]
%                (..IBM has no brackets so < and > are often used as brackets) 
%                \normalbrackets is the default
%     Suboption: \letpunctutionactivefor to use allways with something else
%                (like \wrongtypedspaces), let punctuation (! : ; ?) active
%                after French style. Caution: it's extremly dangerous!
%     (specify the suboptions after \frenchtypography)
%     (sub-options are not saved/restored over a language switch)
% \nofrenchtypography  Nullify former actions
%     Suboption: \wrongtypedspaces suppress spaces before double punctuation
%                (! : ; ?) which was erroneously typed \`a la fran\c caise.
%--------------------
% \frenchlayout        Apply:
%                        - indentation of all (first LaTeX) paragraphs.
%                        - set item markers as --.
%                        - reset section counter when starting a part.
%      Suboption: \noresetatpart nullify the former action.
%                        - special spacing with the experimental "order" list.
%                        - print table footnotes as in minipages.
%                        - print a coma between consecutive footnotes.
%                        - a French pagestyle when starting a Part or a Chapter
%                          or an Index.
%                        - with letter.sty: address placement, typeset \closing
%                          as a paragraph and with \fclosing in place of 
%                          closing you can chose spacing between closing and 
%                          signature by saying \fclosing[n]{...} with n being 
%                          the number of \medskipamount (default is 9).
%                          to typeset the date with \location{Paris, le ...} 
%                          \yourref{...} to refer to a received letter
%                          \ourref{...} for your own reference
%                          \object{...} to precise the object
%                          \PS{...} for a post-scriptum
%                          \email{...} for the email address
%                          \def\formhead{...} for the odd page headings     
%                          \def\formfoot{...} for the odd page footings
%                          \wideletter to enlarge the default linewidth.
%                        - offer macros for starting paragraphs with a dropped 
%                          initial capital letter:
%                             with \lettrine the first letter of the first
%                                  token will be dropped. (warning: in 7-bit 
%                                  write {\c C} for example). Remaining part
%                                  of the token in printed in small caps.
%                             with \flettrine a box will be printed around.
%                             Generic syntax:
%                                  \lettrine{Begining of the paragraph}
%                                 \flettrine{Begining of the paragraph}
%                             or   \lettrine[<< {Begining} >>] (let spacing!)
%                                 \flettrine[<< {Begining} >>] (ending >> might
%                                                   be given later in the text)
%                          \lettrine or \flettrine START a paragraph! And
%                          to avoid any problem the paragrpah must end with an
%                          explicit \par. This is a fragile macro!
%     Suboption: \noautomaticlettrine (default) processing; 
%                      the lettrine uses a standard LaTeX font size.
%                          You can use \lettrinefont to define the font you 
%                          want at the size you want. As default \lettrinefont
%                          is set to \Huge.
%                          Use \def\lettrinehang{n} to force hanging of n
%                          lines (there is no default value).
%                \automaticlettrine processing: the lettrine uses a computed 
%                          font size.
%                          You can use \lettrinefontname to set the font
%                          (default is current font) and it will start the
%                          \automaticlettrine feature that means a new value
%                          of \lettrinefont is established (font-size).
%                          \lettrinehang is defaultly set to 2 lines and
%                          can be changed.
%                          The \automaticlettrine feature can be stoped by
%                          calling \noautomaticlettrine.
%     Suboption: \everyparguillemets open guillemets on every paragraph
%                                    until closing and do nothing at level 2.  
%                                    This is the default. 
%                \noeveryparguillemets don't start each par with guillemets
%                                      but start each level 2 line with them.
%                                 (see documentation for further explanations)
%     Suboption: \overfullhboxmark print the TeX black box exactly where there
%                                  is an overfull hbox (as draft option do)
%                \nooverfullhboxmark is the default in LaTeX
%     Suboption: \labelsinmargin put labels in margin for debugging purposes
%                                This option can be used anywhere (outside
%                                \frenchlayout as well as \french environment)
%                \nolabelsinmargin is the default
%
%                      Propose the following environments:
%     
%  Environment   \begin{order}...\end{order} to enumerate items with
%                           via \primo \secundo etc. and with sepcial spacing
%  Environment   \begin{figurette}...\end{figurette} to place a (little)
%                           figure EXACTLY here.
%  Environment   \begin{versatim}...\end{versatim} to print verbatim
%                          but with hyphenation typeset as in \verse and with
%                          \noenglishquote and \noenglishdoublequotes available
%     Commands:  \vers|...| the inline (or intext) vserion of "versatim"
%      BUGED!!   (\nopagenumbers reintroduced if undefined)
% \nofrenchlayout      Nullify former actions
%--------------------
% \frenchtranslation . Translate all English titles used in LaTeX, to french
%                      and generate French dates. This is the default.
%                      All things should normally run with std LaTeX or Babel.
%                      You can also create your own styles using these captions
%                      A lot of captions are newly defined for letters.
%  Environment   \begin{resume}...\end{resume} to print an abstract
%                    . \resume has been defined for French abstracts (we often
%                      need French and English abstracts together). You must
%                      be in \french before using it. (like you are in \english
%                      when you use \begin{abstract}...\end{abstract}).
%  Environment   \begin{motsclef}...\end{motsclef} to print a keywords list.
%                    . \motsclef has been defined for French keywords.
% (Environment   \begin{keywords}...\end{keywords} to print a keywords list)
%                      (by the way i have defined \keywords \endkeywords)
%                    . \sommaire is defined as a toc in front of a document.
%                      \sommaire[1] don't print paragraphs entries and below.
%                      \sommaire[2] don't print subsubsection entries and below
%                      \sommaire[3] don't print subsection entries and below,
%                                   this is the default for \sommaire.
%                      \sommaire[4] don't print section entries and below,
%                    . \annexe and \annexes have been defined.
%                    . \glossaire and \glossaires have been defined. If the
%                         "theglossary" is undefined, allow:
%                         \printglossary[filename] (default is jobname.gls
%                                      produced by pgm "makeindex -s gglo.ist")
%                         NB: code preferably \glossary{[name :] explanation}
%                         and: without makeindex allow to code jobname.glo
%                              (instead of .gls) & print something acceptable.
%                    . makeidx.sty is included and translated.
%                    . \seealso  is defined for indexes.
% \nofrenchtranslation Nullify former actions. 
%--------------------
% \frenchmacros        Add a lot of macros to help in typographic process.
%                      \ier    for printing 1\ier  (premier)       (examples)
%                      \iere   for printing 1\iere (premiere)
%                      \ieme   for printing 2\ieme (deuxieme)
%                         and their plurials \iers, \ieres and \iemes.
%                      \at     for printing @      (at)
%                      \vert   for printing |      (vertical bar)
%                      \chap   for printing ^      (hat or circonflexe)
%                      \backslash for       \      (backslash)
%                      \tilde  for printing ~      (tilde)
%                      \numero for printing        (no)
%                      \Numero for printing        (No)
%                         as well as \numeros and \Numeros
%                      \degres for printing        (degrees)
%                      \leftguillemets for  <<     (unbalanced left guillemets)
%                      \rightguillemets for >>     (unbal.  right guillemets)
%                      \fup{X} to  put X in a smaller size supscript
%                      \primo      \secundo  \tertio  \quarto \quando={n}    
%                      [or:\primo) \secundo) \tertio) \quarto) not recommanded]
%                      \fsc{name} or \fsc{NAME} will print as {\sc Name}
%                      \lsc{name} or \lsc{NAME} will print as {\sc name}
%                      \refmark{X} stands for \footnotemark[\ref{X}]
%                      \moretolerance will double each TeX tolerance within
%                            any chosen grouping (useful in narrow situations).
%                      \Sauter#Lignes will skip # lines (for specific usage)
%                      \! (negative thin space) run in non math mode
%                The following is for help in headings until ECM not installed:
%                      \minMAJ{oe} to print \oe or \OE in all cases
%                      \minMAJ{ae} to print \ae or \AE in all cases
%                      \minMAJ{i}  to print \i  or I   in all cases
%     Suboption: \abbreviations allowing to ask for: "name_to_be_abbreviated"
%                              will print abbreviation if found otherwise will
%                              give a warning and print the name asis. 
%                              \abbreviations[my_abbrev_file] is allowed.
%                \noabbreviations is the default option
% \nofrenchmacros      Nullify former actions
%--------------------
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%                  ===============================
%                  |       About typing          |
%                  ===============================
%% No code here, just an advice.
%%                     
%% Inputing French punctuation you must type a space:
%% - before a double punctuation (! ? ; :)
%% - before >>
%% - after << ; :
%% Double " or single quoting ` ' as well as single guillemets < > must not
%% be used in french.
%% Type ... normally (instead of \dots or \ldots).
%% Respect French abbreviations like: 
%% \hbox{c.-\`a-d.} / {\em i.e.} /  p.ex. / etc. / cf. /
%% id. / p.i. / p.o. / doc. / chap. / part. / vol. / paragr. / R.S.V.P. / ...
%%
%% Please apply these allmost elementary (and historical) rules.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\ifx\undefined\language\countdef\language=19\fi%undefined in TeX V2.. \language
\newif\ifECM\newif\ifLPLAIN%
% Here come \if-switches codes in case of french.sty badly initiated
\def\ErrFrench{\message{-26- Erreur d\'etect\'ee dans \frenchname.sty !}%
   \message{(voir p.ex. le fichier language.dat)}}%
\def\ifFTY{\ErrFrench}\def\ifFTR{\ErrFrench}\def\ifFG{\ErrFrench}%
\def\ifFLA{\ErrFrench}\def\ifFMA{\ErrFrench}\def\ifFH{\ErrFrench}%
% Here are basic macros often coming from latex.tex
\ifx\undefined\makeatletter%
  \def\makeatletter{\catcode`\@=11\relax}\fi%...................\makeatletter
\ifx\undefined\makeatother%
  \def\makeatother{\catcode`\@=12\relax}\fi%....................\makeatother
\edef\GOfrench{`\string @}% temp def futher correctly defined
\ifnum\catcode\GOfrench=11% mods of code proposed by DT that
       \let\resetat\relax% accepts also that @ were active
  \else\edef\resetat{\noexpand\catcode\GOfrench=\the\catcode\GOfrench}%
       \makeatletter\fi%
%
\let\@currnameORI\@currname% save current package name
\def\GOfrench{babel}\ifx\@currname\GOfrench% allow Babel to load me
                    \ifx\undefined\babel@core@loaded\input babel.def\relax\fi%
                    \ifx\undefined\babel@core@loaded% still undefined (>3.5)?
                              \let\babel@core@loaded\main@language\fi%
                    \fi%
\ifx\ProvidesPackage\undefined\else\xdef\@currname{french}% set package req.
    \ProvidesPackage{french}[\FSfd\space French package /\FSfv/ %
                             (2e and 2.09 compatible)]%
\fi%
%\let\FSfd=\undefined% let it defined for possible patch test.
\let\FSfv=\undefined% return to the pool
%
\ifx\undefined\@makeother% to avoid @ being \undefined
  \def\@makeother#1{\catcode`#1=12\relax}\fi%...................\@makeother
\def\@temp@{lplain-bilingual}% E.P. wrong old def checking
\ifx\fmtname\@temp@\typeout{ERROR: check for lplain.tex in ALIRE}\stop\fi%
%
\ifx\undefined\@dblarg% ....................................... \@dblarg
\long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}%
\long\def\@xdblarg#1#2{#1[{#2}]{#2}}%
\fi%
% This is a little code to avoid braces to be striped when the token
% is provided via a macro parameter.
\def\@PreserveBraces[#1#2]%................................... \@PreserveBraces
                    {\ifcat\noexpand#1$ #1#2\def\@temp@{}%
                       \else\def\@temp@{#2}%
                            \ifx\@temp@\empty\def\@temp@{#1}%
                                        \else\def\@temp@{{#1#2}}\fi%
                     \fi\expandafter\@temp@}%
%
% Include here needed LaTeX compatible definitions.
%
\def\newwrite{\alloc@7\write\chardef\sixt@@n}%not an outer def..\newwrite
\ifx\@unused\undefined\newwrite\@unused\fi%.....................\@unused
\ifx\protect\undefined\let\protect\empty\fi%....................\protect
\ifx\@typeset@protect\undefined%.............. (used with 2e).\@typeset@protect
    \let\@typeset@protect\protect\fi%
\ifx\@ifundefined\undefined%
\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname%.......... \@ifundefined 
                             #1\endcsname\relax#2\else#3\fi}%
\fi%
\@ifundefined{typeout}{%........................................\typeout
  \global\newlinechar`\^^J%
  \def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}}%
                      }{}%
\@ifundefined{inputlineno}{\def\@o@l{.}}% \inputlineno undefined in V2
      {\ifnum\inputlineno=-1\def\@o@l{.}% may be negative
              \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi}%
\ifx\documentclass\undefined%
                  \let\@aiguORI=\'\let\@gravORI=\`\let\@acchORI=\^%
\else%
  \expandafter\let\expandafter\@aiguORI\expandafter=%
               \csname OT\string1\string\'\endcsname%
  \expandafter\let\expandafter\@gravORI\expandafter=%
               \csname OT\string1\string\`\endcsname%
  \expandafter\let\expandafter\@acchORI\expandafter=%
               \csname OT\string1\string\^\endcsname%
\fi
\def\@fw#1{{\def\@nobraces##1{##1}%
        \ifx\charsubdef\undefined\let\protect\string%
                                 \let\add@accent\@gobble% for 2e
        \else%
            \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
            \def\`##1{\expandafter\@nobraces\@gravORI##1}%
%           \def\^##1{\expandafter\@nobraces\@acchORI##1}%
        \fi%
        \edef\@tempa{#1}\typeout{\@tempa}}}%
{\def\ier{er}% this is the French typographic abbreviation of "st"  
 \def\'#1{\expandafter\@nobraces\@aiguORI#1}%
 \def\^#1{\expandafter\@nobraces\@acchORI#1}%
\@fw{^^J -23- Extension \string : vieux style \frenchname\space^^J%
                             pour plain-TeX %
                             \frenchstyleid\space(B.Gaulle, GUTenberg)}%
\let\frenchstyleid\undefined%
\ifopenin\else%
\@fw{ *******************************************************************}%
\@fw{ * -24- ATTENTION, restrictions dues \`a votre moteur TeX :}%
\@fw{ * 1- fichier langage.dat inutilis\'e ;}%
\@fw{ * 2- gestion  appauvrie des documents multilingues ;}%
\@fw{ * 3- pas de possibilit\'e d'abr\'eviations automatiques ;}%
\@fw{ * 4- pas de chargement dynamique du fichier des exceptions.}%
\@fw{ *******************************************************************}%
\fi%
}%
%
\def\@fw#1{{\def\@nobraces##1{##1}% ........................... French warning
        \ifx\charsubdef\undefined\let\protect\string%
                                 \let\add@accent\@gobble% for 2e
        \else%
            \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
            \def\`##1{\expandafter\@nobraces\@gravORI##1}%
        \fi%
        \edef\@tempa{#1\@o@l}% expand it now
        \typeout{^^J \frenchname.sty \string : \@tempa}}}%
%
{\def\set@filesw{\global\let\if@filesw\iftrue}%
 \ifx\undefined\if@filesw\set@filesw\fi}%.......................\if@filesw
\ifx\undefined\@@input\let\@@input=\input\fi%...................\@@input
\def\@Ffnt#1{\@fw{-2- fichier #1 non trouv\'e}}%
\def\@finput#1{\openin\@ne #1 \ifeof\@ne \@Ffnt{#1}%............\@finput
                \else\closein\@ne \relax\@@input #1 \fi}%
\def\@NoFr{\@fw{-3- l'option \frenchname\space n'est pas active ici !}}%
\def\ifFrench#1\fi{\@NoFr}% a temporary definition for error messages
                          %(\endnonfrench remains \undefined)
\def\originalinput#1{\ifFrench\english\@finput{#1}\french%..... \originalinput
                                \else\@finput{#1}\fi\relax}%
\def\originaloutput[#1]{%..................................... \originaloutput
     \bgroup\ifFrench\english\fi%
     \def\@riginalout##1##2{\immediate\write##1{##2}\egroup}%
     \@riginalout{#1}}%
\@ifundefined{fussy}{\def\fussy{\relax}}{}%.....................\fussy
\@ifundefined{sloppy}{\def\sloppy{\relax}}{}%...................\sloppy
\@ifundefined{pcomma}{%.........................................\,
            \def\,{\protect\pcomma}%
            \def\pcomma{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}}{}%
\@ifundefined{date}{\def\date#1{\def\@date{#1}}%..............  \date
                    \def\@date{\today}}{}%Default is today's date
\@ifundefined{vspace}{\def\vspace*#1{\vskip#1}}{}%............  \vspace
% We need \ifFLA now
\let\ifFLA\iffalse%
\@ifundefined{printindex}{% makeidx.sty is included (as of 20-jan-87)
    \def\see#1#2{\seename%i assume this macro is defined in non-english sty.
              \/ {#1}}%.........................................\see
    \def\printindex{\clearpage\addcontentsline{toc}{chapter}%.. \printindex
                    {\protect\indexname}%
                    {\let\@ti\theindex%........................ \theindex
                     \def\theindex{\@ti\ifFLA\thispagestyle{french}\fi}%
                    \@finput{\jobname.ind}}}}{}%
\def\ifFLA{\ErrFrench}% reset it to normal value here
\@ifundefined{seealso}{%cf TUGboat V12#2 p290 and V13#1 p 95 .. \seealso
   \def\subsee#1#2{\seealsoname% i assume this macro is defined in non-engl.
                    \/ {#1}}% the #2 consumes a comma
   \let\nosee\@gobble% consume the page number 
   \def\seealso{\bgroup\edef\@temp@{}\@ifNextNB[{\see@@so}%] case index.sty
                                                          {\see@lso}}%
   \def\see@lso#1#2{\expandafter% \subsee no more protected by \string V3,47
                    \index\@temp@{#1!zzzzz@\subsee{#2}|nosee}\egroup}%
   \def\see@@so[#1]{\edef\@temp@{[#1]}\see@lso}}{}%
\@ifundefined{textwidth}{\def\textwidth{\hsize}%............... \textwidth
     \def\leftmargin{0pt}\def\rightmargin{0pt}%....... \right & \leftmargin
     \def\columnsep{0pt}%.....................................  \columnsep
     \def\listparindent{0pt}}{}%..............................  \listparindent
%
%                    {\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301}
\@ifundefined{@highpenalty}{\def\@highpenalty{301}}{}%......... \@...penalty
%
\@ifundefined{clearpage}{\def\clearpage{\par\vfill\eject}}{}%.. \clearpage
%
% \if switches mechanism
 \def\@ifFTYfalse{\let\if@Back\ifFTY\let\ifFTY\iffalse}%
 \def\@ifFTYback{\let\ifFTY\if@Back}%
%
% Poor man defs
\newif\if@PMF\@PMFfalse%
\def\pmfrench{\@PMFtrue\@fw{-4- entering now "Poor-Man-French-Style" way}%
              \def\frenchname{pmfrench}}%
%
% Font processing
%
% test if LaTeX fonts can be used (is format lplain or LaTeX2e?)
{\def\@LPLAINtrue{\global\let\ifLPLAIN\iftrue}% set it global
 \def\@LPLAINfalse{\global\let\ifLPLAIN\iffalse}% 
 \@ifundefined{fmtname}{\LPLAINfalse}{\@LPLAINfalse%
     \def\@fmt{lplain}\ifx\fmtname\@fmt\@LPLAINtrue\gdef\@lySym{nfltxsym}\fi%
     \def\@fmt{LaTeX2e}\ifx\fmtname\@fmt\@LPLAINtrue\gdef\@lySym{latexsym}%
                       \xdef\@currname{latexsym}% set current package req
                       \fi%
                                     }%
}%
\ifx\ly\undefined%
\ifx\documentclass\undefined\else% load latexsym now silently to avoid warning.
    \ifx\documentclass\@twoclasseserror%
    \@@input latexsym.sty\@@input ulasy.fd% dont use \usepackage in 2.09!
%    \DeclareFontShape{U}{lasy}{b}{n}{ <-10> ssub * lasy/m/n% 
%        <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>lasyb10  }{}%
    \fi%
\fi%
\fi% \ly\undefined
% look at \GOfrench for \footnotesize, \Huge, \sm@ller, \l@rger and co.
% 
%                                   % new defs for Plain TeX
%
\@ifundefined{@@par}{\let\@@par\par}{}%........................ \@@par
\@ifundefined{normalfont}{\def\normalfont{}}{}%................ \normalfont
% \small, \normalsize, \large, \em \sc were undefined in plain TeX
\ifLPLAIN\else{%
\@ifundefined{small}{\def\@tempa#1 #2\@@{% 
                     \global\font\small=%...................... \small
                     #1\space scaled 900}% 
                     \edef\@tempb{ }%
                     \expandafter\@tempa\fontname%
                     \expandafter\font\@tempb\@@}{}%
\@ifundefined{normalsize}{\global\let\normalsize\tenrm}{}%..... \normalsize
\@ifundefined{large}{\def\@tempa#1 #2\@@{% 
                     \global\font\large=%...................... \large
                     #1\space scaled \magstep4}%
                     \edef\@tempb{ }%
                     \expandafter\@tempa\fontname%
                     \expandafter\font\@tempb\@@}{}%
\@ifundefined{sc}{\gdef\sc{\rm}}{}% we will do nothing for ......\sc
\@ifundefined{em}{\gdef\em{\it}}{}% we will italicize with it ...\em
              }\fi%
% if \encodingdefault is undefined test if ECM or DC are in use. 
\def\@temp@{% a temporary def
{\def\is@DC##1##2##3\relax{\if d##11\fi \if e##11\fi \if c##22\fi}%
 \def\dc@first##1##2{##1}%
 \def\dc@second##1##2{##2}%
 \def\dcdo{% \dcdo code Version 3 as of 01/27/92 on DCFONT discussion list
             \ifnum 12=0\expandafter\is@DC\fontname\font xx\relax\space%
                        \expandafter\dc@first%
             \else      \expandafter\dc@second%
             \fi}%
{\rm\dcdo{\global\let\ifECM\iftrue}{\global\let\ifECM\iffalse}}}%final DC test
           }%\@temp@
% if \encodingdefault is defined use this information:
\ifx\encodingdefault\undefined%
 \else\ifx\fontencoding\undefined\edef\f@encoding{\encodingdefault}%
                       \else\fontencoding{\encodingdefault}\selectfont%
       \fi%
       \def\@temp@{T1}\ifx\@temp@\f@encoding%
                           \def\@temp@{\global\ECMtrue}%
                      \else\def\@temp@{\global\ECMfalse}%
                      \fi%
\fi%\encodingdefault
\@temp@%
\message{^^J -25- \frenchname.sty utilise dans ce document le codage de fonte %
         \ifECM T1\else OT1\fi.}%
\@ifundefined{mathrm}{\def\mathrm{\rm}}{}% for compatibility with NFSS
% What font use for guillemets? 
% if \guillemetsinroman: 1- DC 2- lasy (LaTeX+NFSS) 3- math simulation
\let\ifGIAF\iftrue% by now assume guillemets in all fonts
\@ifundefined{ly}% if lplain try to define \ly with NFSS .................  \ly
  {\ifLPLAIN%
     \ifECM\def\ly{\rm}% default is \rm
     \else%
       \ifx\DeclareFontShape\undefined% the following for NFSS V1
           \def\ly{\family{lasy}% set shape and series 
                   \ifGIAF\else\series{m}\shape{n}\fi\selectfont}%
       \else% the following for NFSS2
           \ifx\symlasy\undefined% if nfltxsym option not used
               \expandafter\@@input \@lySym.sty\fi% load LaTeX symbols defs
           \def\ly{\fontencoding{U}\fontfamily{lasy}% set encoding & family 
           \ifGIAF\else\fontseries{m}\fontshape{n}\fi\selectfont}%
       \fi% end of NFSS version testing
     \fi%
   \else\ifECM\def\ly{\rm}\fi% else with ECM default is \rm
   \fi}{}% 
%
\@ifundefined{rmdefault}{\def\rmdefault{cmr}}{}% ................... \rmdefault
\@ifundefined{new@fontshape}{\def\@MYrm{\rm}}% My \rm stands for :
      {\ifx\fontfamily\undefined%
       \def\@MYrm{\family{\rmdefault}\series{m}\shape{n}\selectfont}% for NFSS1
       \else\def\@MYrm{%
           \fontfamily{\rmdefault}\fontseries{m}\fontshape{n}\selectfont}% 2e
       \fi}%  
\@ifundefined{mdseries}{\ifx\mediumseries\undefined% used in docs. \mdseries
                        \def\mdseries{}% default for plain
                        \else\let\mdseries\mediumseries% for NFSS 1
                        \fi}{}%
\@ifundefined{@textsuperscript}{\def\@textsuperscript#1{%.... \@textsuperscript
                                $^{{#1}}\m@th$}}{}%
%
% \string definitions and saved chars
%
\edef\lq{\string`}\edef\rq{\string'}% as usual in LaTeX .............. \lq  \rq
\let\@cilq='% this will be the catcode independent left quote 
\edef\lqq{\string`\string`}\edef\rqq{\string'\string'}%.............. \lqq \rqq
\edef\pointvirgule{\string;}%.................................... \pointvirgule
\edef\deuxpoints{\string:}%........................................ \deuxpoints
\edef\pointexclamation{\string!}%...........................  \pointexclamation
\edef\pointinterrogation{\string?}%.......................  \pointinterrogation
\edef\inferieura{\string<}%.......................................  \inferieura
\edef\superieura{\string>}%.......................................  \superieura
\edef\dittomark{\string"}%.........................................  \dittomark
%
\let\@gotl\guillemotleft%
\let\@gotr\guillemotright%
%\def\@SLQ{\string`}
%                             \ifmmode^\prime\else\string'\fi}%
\let\@SLQ\lq\def\@SRQ{%\relax
                             \ifmmode^\prime\else\rq\fi}%
%\def\@LSG{\string<}\def\@DOG{\string<\string<}%
\let\@LSG\inferieura\def\@DOG{\inferieura\inferieura}%
%\def\@RSG{\string>}\def\@DFG{\string>\string>}%
\let\@RSG\superieura\def\@DFG{\superieura\superieura}%
\def\@SOC{\string[% ] emacs
         }%
\def\@SFC{% [ emacs
          \string]}%
\edef\@LP{\ifECM023\else(\fi% ) emacs
         }%
\edef\@RP{% ( emacs
          \ifECM024\else)\fi}%
%
% Define Options ............................  French style OPTIONS definitions
%
\newif\ifFH%
\def\@TooEarly{. Ne peut pas etre precise avant le \begin{document} !}%
\let\frenchhyphenation\@TooEarly%options can only be set after \begin{document}
\let\nofrenchhyphenation\@TooEarly% or in \usersfrenchoptions
\let\frenchtypography\@TooEarly%
\let\nofrenchtypography\@TooEarly%
\let\nofrenchtranslation\@TooEarly%
\let\frenchtranslation\@TooEarly%
\let\noeveryparguillemets\@TooEarly%
\let\everyparguillemets\@TooEarly%
\let\nofrenchlayout\@TooEarly%
\let\frenchlayout\@TooEarly%
\let\nofrenchmacros\@TooEarly%
\let\frenchmacros\@TooEarly%
%
%%%\let\ifLPA\iffalse% bab 3.5
%
\def\@ifo{% options to be defined at \begin{document}
\let\h@yphenation\hyphenation% save original \hyphenation
\def\frenchhyphenation{\ifFH\else\FHtrue%....................\frenchhyphenation
                       \edef\@uchORI{\the\uchyph}% save previous uchyph value
                       \def\@Hif{\ifFH}\let\@Hfi\fi%
                       \lccode `\'=`\'%
%         % There is no need to change here left&right hyphenmin counts
%         % but other languages might have changed default values
     \@ifundefined{lefthyphenmin}{}%
                 {\lefthyphenmin=2\righthyphenmin=3}% disallow x- or -xx breaks
                       \@whatUCH% set Upper Case Hyphenation whatsit
                      \def\@tempa####1{{\accenthyphcodes\h@yphenation{####1}}}%
                       \ifx\@tempa\hyphenation%
                           \@fw{-41- your format is out of date, %
                                please run initex again!}\stop%
                       \fi%
                       \ifLPLAIN\def\accenthyphcodes{%
                                 \ifECM\else\fontencoding{T1}%
                                  \let\pickup@font\@gobble%
                                   \let\size@update\relax\selectfont%
                                 \fi}%
                       \fi%
                       \def\hyphenation####1{\bgroup%
                            \csname accenthyphcodes\endcsname%
                             \lowercase{\edef\@tempa{####1}}%
                              \h@yphenation{\@tempa}\egroup}%
                       \let\s@owhyphens\showhyphens%
                       \def\showhyphens####1{\bgroup%
                            \csname accenthyphcodes\endcsname%
                             \edef\@tempa{####1}\s@owhyphens{\@tempa}\egroup}%
                       \fi}%\ifFH
\def\nofrenchhyphenation{\ifFH\FHfalse%....................\nofrenchhyphenation
                        \lccode`\'=0%
          \let\hyphenation\h@yphenation% restore original \hyphenation
          \@ifundefined{lefthyphenmin}{}%
                 {\lefthyphenmin=2\righthyphenmin=3}% disallow x- or -xx breaks
          \uchyph=\@uchORI%reset original hyph. on words starting with capitals
                       \fi}%
%
\def\nofrenchtypography{%...................................\nofrenchtypography
                        \let\ifFTY\iffalse%
                        \nofrenchguillemets% reseting
                        \sloppy% may extend line past the right hand
                        \nonfrenchspacing%
                       }%
\def\frenchtypography{%.......................................\frenchtypography
                      \let\ifFTY\iftrue\englishquote\englishdoublequotes% 
                      \nolabelsinmargin\typedspaces%
                      \let\ifLPA\iffalse% default is clean... 
                      \nowrongtypedspaces\notabbingaccents% useless with ECM
                      \frenchguillemets%
                      \normalbrackets\todayguillemets%
                      \guillemetsinroman%
                      \fussy% must not extend line past the right hand 
                      \frenchspacing%
%                     \nooverfullhboxmark% std LaTeX default not plain
                     }%
\def\nofrenchtranslation{\let\ifFTR\iffalse\@cORI}%........\nofrenchtranslation
\def\frenchtranslation{\let\ifFTR\iftrue\captionsfrench}%....\frenchtranslation
\def\frenchguillemets{\let\ifFG\iftrue%.....................  \frenchguillemets
                      \let\guillemotleft\fguillemets%
                      \let\guillemotright\endfguillemets%
                      \AFPinfsup}%
\def\nofrenchguillemets{\let\ifFG\iffalse%................  \nofrenchguillemets
                      \let\guillemotleft\@gotl%
                      \let\guillemotright\@gotr%
                      \DFPinfsup}%
\def\noeveryparguillemets{\let\ifEPG\iffalse%.............\noeveryparguillemets
                           \@desarm\let\@desarm\relax}% release memory
\def\everyparguillemets{\let\ifEPG\iftrue}%.................\everyparguillemets
\def\nofrenchlayout{\let\ifFLA\iffalse\@EIM}%...................\nofrenchlayout
\def\frenchlayout{\let\ifFLA\iftrue\everyparguillemets%...........\frenchlayout
                  \@FIM\@FL\let\@FL\empty\noautomaticlettrine}%
\def\nofrenchmacros{\let\ifFMA\iffalse}%........................\nofrenchmacros
\def\frenchmacros{\let\ifFMA\iftrue\@ifm%.........................\frenchmacros
                  \let\@ifm\relax}% release memory
\let\@TooEarly\relax% let suboptions as relax outside french
\ifx\verb\undefined%
     \else\let\@vORI\verb% Let normal LaTeX \verb protected ............. \verb
          \def\verb{\protect\@vORI}\fi%
}% end of \@ifo  {\GOfrench part 1}
%
\long\def\usersfrenchoptions#1{\long\def\@ufo{#1}}%.......  \usersfrenchoptions
     \@ifundefined{@ufo}{%   define...
     \usersfrenchoptions{}%  default users options...
                        }{}% but do nothing if allready defined
%
%.......................................................  Modified  TeX  macros
%
\ifx\documentclass\undefined% don't change it in 2e
  \def\pr@m@s{\ifx\@cilq\next\let\next\pr@@@s% to process prime when ' active
              \else\ifx^\next\let\next\pr@@@t\else\let\next\egroup\fi%
              \fi\next}%
\else% David Carlisle said the new code is safer:
  \def\prim@s{\prime\futurelet\@let@token\pr@m@s}%
  \def\pr@m@s{\ifx\@cilq\@let@token\expandafter\pr@@@s%
              \else\ifx^\@let@token\expandafter\expandafter\expandafter\pr@@@t%
                   \else\egroup\fi%
              \fi}%
\fi%
\let\@fsORI\frenchspacing% modified for guillemets.............  \frenchspacing
\def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}%
%%%%
% let < ' ` > active for the following macros
\catcode`<=\active\catcode`>=\active\catcode`'=\active\catcode``=\active
\def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}}%
\let\@s@ORI\special%.................................................  \special
\def\special#1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{#1}\egroup\@ifFTYback}%
% \newcount, \newdimen, \newbox were \outer defs in plain.
\def\newcount{\alloc@0\count\countdef\insc@unt}%....................  \newcount
\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}%....................  \newdimen
\def\newbox{\alloc@4\box\chardef\insc@unt}%.........................  \newbox
%
%.......................................................  Modified LaTeX macros
%
%%% need to be defined only after style initiation so we delay.
%
\def\GOfrench{% this is the code to initiate the French style
         {\catcode\lq\<=\active\ifx<\undefined\else\global%
          \let\@mLSG<\global%
          \def\@LSG{\ifmmode\@mLSG\else\inferieura\fi}\fi}%
         {\catcode\lq\>=\active\ifx>\undefined\else\global%
          \let\@mRSG>\global%
          \def\@RSG{\ifmmode\@mRSG\else\superieura\fi}\fi}%
\if@PMF\def\pmfrench{}\def\noeveryparguillemets{}\def\@stared{}%
       \def\@desarm{}\def\@qquotes{}\def\@staring{}\def\@fniv2{}\fi%
\@ifundefined{smaller}{\def\sm@ller{\small}%   ... you can use ...[smaller.sty]
                       \def\l@rger{\large}}%
                      {\ifx\undefined\sm@ller% ... you can use ...[relsize.sty]
                       \let\sm@ller\smaller\fi}%
\@ifundefined{footnotesize}{%.................................... \footnotesize
                       \def\footnotesize{\sm@ller\sm@ller}}{}%
\@ifundefined{Huge}{%.................................................... \Huge
                    \def\Huge{\l@rger\l@rger\l@rger\l@rger\l@rger}}{}%
\@ifundefined{lettrinefont}{\let\lettrinefont\Huge}{}%........... \lettrinefont
\let\sv@lf=\lettrinefont% save it
\@ifundefined{quotation}{\def\quotation{}}{}%......................  \quotation
\ifx\tableofcontents\undefined%
     \else\let\@tocORI\tableofcontents\fi% permit toc normal processing
% Reset chapter counter when starting a part & ................  \noresetatpart
\@ifundefined{chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}%
                                 \def\noresetatpart{\let\cl@part\empty}}%
\@ifundefined{l@chapter}{%...................................... \l@chapter
\def\@tempa{%
   \def\l@chapter####1####2{\addpenalty{-\@highpenalty}%
   \vskip 1.0em plus\p@\@tempdima 1.5em% numbering size
   \begingroup%
     \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth%
     \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip%
     ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par%
     \penalty\@highpenalty%
   \endgroup}}%
\ifx\RIfM@\undefined\@tempa% l@chapter defined, not for AmSLaTeX V1.2 classes
 \else%                    % but for AmSLaTeX styles.
  \expandafter\ifx\csname @classname\endcsname\relax\@tempa%
               \else\def\@tempb##1##2##3##4\@nil{%
                                      \if##1a\if##2m\if##3s\else\@tempa\fi%
                                             \else\@tempa\fi\else\@tempa\fi}%
                    \expandafter\@tempb\@classname\@nil%
              \fi%
\fi}{}% undefined in article.sty
%
\@ifundefined{protected@edef}{\let\protected@edef\edef}{}%..... \protected@edef      
%
% General code for generating replacement macros for \cite \nocite etc.
% \@gG{a string "s" for letting \@"s"@ORI as the original macro}
%     {original macro name -without backslash}
%     {string "/" if original macro had no [optional parm] otherwise empty}
%     {number of other parms} % not implemented now
    \def\@gG##1##2##3##4{\def\@temp@{%
                      \expandafter\let\csname @##1@ORI\endcsname=}%
                      \expandafter\@temp@\csname ##2\endcsname%
              \if/##3\expandafter\def\csname ##2\endcsname{\protect\@gM@{##1}}%
                \else\expandafter\def\csname ##2\endcsname{\protect\@gM{##1}}%
                    \fi}%
    \def\@gM@##1##2{\bgroup\@ifFTYfalse\@Fstr%
                     \expandafter\csname @##1@ORI\endcsname{##2}\egroup}%
    \def\@gM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}%]emacs
               }%
    \def\@gM@@##1[##2]##3{\bgroup\@ifFTYfalse\@Fstr\xdef\@temp@{##3}\egroup%
                          \protected@edef\@gG@{##2}%
                          \ifx\@gG@\empty\else\protected@edef\@gG@{[##2]}\fi%
                          \let\@typeset@protect\protect%
                          \expandafter\expandafter%
                          \csname @##1@ORI\endcsname\@gG@{\@temp@}}%
% Nullify Babel mechanism which doesn't run correctly in its current version
\ifx\babel@sanitize@arg\undefined\else%
\def\babel@sanitize@arg##1{##1}%
\wlog{\frenchname\string: use of the babel package force me to nullify %
      \noexpand\babel@sanitize@arg.}%
\fi%
\ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}\fi%................... \texttt
\ifx\cite\undefined\else\@gG{c}{cite}{}{1}\fi%........................... \cite
\ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi%................... \nocite
\ifx\bibcite\undefined\else\@gG{bc}{bibcite}{}{1}\fi%................. \bibcite
\ifx\bibitem\undefined\else\let\@biORI\bibitem% ...................... \bibitem
     \def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'\let\@dqORI"%
          \@Fstr\@ifFTYfalse}%
     \def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI%
          \@ifFTYback}%
     \def\bibitem{\@LiN\@ifNextNB[{\@bi@cb}{\@bi@ca}%]emacs
                 }%
     \def\@bi@ca##1{\@biORI{##1}\@LiB}%
     \def\@bi@cb[##1]##2{\@biORI[##1]{##2}\@LiB}%
\fi%
\ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi%............................. \ref
\ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi%............................ \tag
\ifx\pageref\undefined\else\@gG{pr}{pageref}{/}{1}\fi%.................\pageref
% take in account varioref package if present:
\ifx\vref\undefined\else\@gG{vr}{vref}{/}{1}\fi%......................... \vref
\ifx\vpageref\undefined\else\@gG{vpr}{vpageref}{}{1}\fi%..............\vpageref
\xdef\@lim{}\let\ifMOVING\iffalse%
\def\@temp@{%
     \def\label{\protect\@LabeL}% needed to be protected for \thanks
     \def\@LabeL####1{\@ifFTYfalse\if@labelsinmargin\ifMOVING%
         \xdef\@lim{\ifx\@lim\empty\else\@lim\@@par\relax\fi[####1]}%
         \gdef\@lim@{\@ifFTYfalse\hbadness=\@M\tt\@lim\@ifFTYback}%
         \else\marginpar{\@ifFTYfalse\hbadness=\@M\tt[####1]\@ifFTYback}\fi\fi%
                         % how suppress  Overful \hbox here?
     \bgroup\@Fstr\@lORI{####1}\egroup\@ifFTYback}%
           }%
\ifx\label\undefined\else\let\@lORI\label%.............................. \label
                         \@temp@% new def apply
                         \let\ltx@label\label% for amsmath.sty
\fi%
%instead this coding, active chars in \label must be protected inside a \thanks
\ifx\newlabel\undefined\else\@gG{nl}{newlabel}{}{1}\fi%.............. \newlabel
%\@ifundefined{addtocontents}{\gdef\addtocontents##1##2{}}{}%....\addtocontents
\def\@temp@{%
     \let\@aclORI\addcontentsline%............................ \addcontentsline
     \global\let\ifCG\iftrue% Nullify if-guillemets on a new sectioning 
     \def\addcontentsline####1####2####3{\@ifFTYfalse\bgroup\@Fstr%
                 \@aclORI{####1}{####2}{####3}\egroup\@ifFTYback}%
           }%
\@ifundefined{addcontentsline}{\gdef\addcontentsline##1##2##3{}}% dummy def
                              {\@temp@}%
\let\ifFrench\iffalse% let it be known now
\def\@temp@{%
%            \def\index{\bgroup\ifFrench\@DFP\fi\@sanitize\@@Findex}%
%            \def\@@Findex####1{\@iORI{####1}\egroup}%
            \def\index{\bgroup\ifFrench\@DFP\fi%
                       \expandafter\egroup\@iORI}%
           }%
\ifx\index\undefined\else\let\@iORI\index%.............................. \index
                         \@temp@% new def apply
\fi%
%
\ifx\list\undefined\else% just to set for \noeveryparguillemets
                   \let\@liORI\list\fi%  that we are in a 
\def\list##1##2{\def\@inAlist{}\@liORI{##1}{##2}}% list environment...... \list
\ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi%....  \@makecaption
\def\@makecaption##1##2{\ifFTY\@mcORI{##1}{\relax% for AmSLaTeX V1.2 96/11
                                                 {\em ##2}}% in italics
                       \else\@mcORI{##1}{##2}\fi}%
%
%Leslie claims that "The footnotemarker is regarded as having zero width, which
%is appropriate when it comes at the end of line"(p164) <== not a French habit.
\def\@temp@{%
     \def\thanks####1{\bgroup%......................................... \thanks
     \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi%
      \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}%
       \fi\@thORI{####1}%
        \egroup}%Restore original \@footnotemark in \thanks... (\@footnotemark)
           }%
\ifx\thanks\undefined\else\let\@thORI\thanks\@temp@\fi%
\let\ifFTY\iffalse% temp def for next processing
\ifx\@makefnmark\undefined\else\let\@mfnmORI\@makefnmark%........  \@makefnmark
\def\@makefnmark{\ifFTY\hbox{\@textsuperscript{\normalfont%
                           \ifx\thefootnote\relax\else\,\fi%
                                               \@thefnmark}}%
                 \else\@mfnmORI\fi}%
\fi%
% no more need of \! correction in \@fnsymbol. 12/27/95
%\ifx\@fnsymbol\undefined\else\let\@fnsORI\@fnsymbol\fi%
%\def\@fnsymbol##1{\@fnsORI{##1}\ifFTY\!\fi}% spacing pb bypass .... \@fnsymbol
\def\@temp@{%
     \long\def\@makefntext####1{% footline starts here.
                                \bgroup%
       \ifFTY\def\@tempa{footnote}\let\@tfnORI\@thefnmark% 
        \ifx\@tempa\@mpfn%do it only for page footnotes not minipages ones
           \def\@thefnmark{% marker under the footline, no more in superscript.
                           % two grouping levels in pure 2e.
                           \egroup\egroup% no point when no marker
                           \hbox\bgroup\textnormal\bgroup%
                           \def\@temp@{\@ifnextchar\relax{\def\@temp@{\,}}%
                                             {\def\@temp@{.\kern+0.25em}}}%
                                \expandafter\@temp@\@tfnORI\@temp@%
                               }%
            \leavevmode\kern+0.5em%add some spacing for at least 3 digits 
        \else\def\@thefnmark{\@tfnORI\,}\fi% add thin space in mpfootmarks
       \fi\@mfntORI{####1}\egroup}% \@makefntext
           }%
\ifx\@makefntext\undefined\else%.................................  \@makefntext
     \let\@mfntORI\@makefntext\@temp@%
\fi%
\def\@temp@{% one level in 2.09
     \long\def\@makefntext####1{\bgroup%
                              \def\@tempa{footnote}\let\@tfnORI\@thefnmark% 
       \ifFTY% really dirty this coding!
        \ifx\@tempa\@mpfn%do it only for page footnotes not minipages ones
                \def\@thefnmark{\,\egroup% no point when no marker
                                \def\@temp@{\def\@temp@{}\@ifnextchar\relax%
                                            {}{\def\@temp@{.\kern+0.25em}}}%
                     \expandafter\@temp@\@tfnORI\@temp@\bgroup}%
            \leavevmode\kern+0.5em%add some spacing for at least 3 digits 
        \else\def\@thefnmark{\@tfnORI\,}\fi% add thin space in mpfootmarks
       \fi\@mfntORI{####1}\egroup}% \@makefntext
           }% \@temp@
\def\@tempb{%
 \def\@tempa{\if@compatibility\@temp@\fi}% 2.09 compatibility case
 \ifx\documentclass\undefined\@temp@\else\@tempa\fi% 2e case
 \def\@temp@{}% reset to empty
           }%
\ifx\@makefntext\undefined\else\@tempb\fi%
\def\ifFTY{\ErrFrench}%
\let\@fntORI\@footnotetext% nullify marginpar in ................  \@footnotext
\long\def\@footnotetext##1{\bgroup\let\if@labelsinmargin\iffalse%
                      \@fntORI{##1}\egroup}%
% Why \footnote doesn't \unskip the previous space?
% Allow hyphenation too with \nobreak (as suggested by Bernd Raichle)
\let\@fnORI\footnote%............................................... \footnote
\def\footnote{\ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi%
                            \nobreak\fi\fi\@ifNextNB[\@Footnote\@Fntnorm}%
\long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}\@ifNextNB\footnote\@Fntcoma{}}%
\long\def\@Fntnorm##1{\@fnORI{##1}\@ifNextNB\footnote\@Fntcoma{}}%
\def\@Fntcoma{\ifFLA\@textsuperscript{,}\nobreak\fi}%
\def\@Fxloat##1[##2]{\@xfORI{##1}[##2]\csname @Fend\@currenvir\endcsname}%
\let\@fgeORI\figure\let\@efgeORI\endfigure% needed for figurette
\def\@temp@{\let\@fgeORI\figure%.....................................  \figure
            \def\figure{\let\ifMOVING\iftrue%
                        \let\if@minipage\iftrue%
                        \ifx\@xfORI\undefined%
                            \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
                        \fi%
                        \@fgeORI}}%
\ifx\figure\undefined\let\@temp@\relax\fi\@temp@%
\def\@Fendfigure{\let\@efgeORI\endfigure%.......................... \endfigure
            \def\endfigure{\@efgeORI%
                           \ifx\@lim\empty\else\marginpar{\@lim@}%
                            \xdef\@lim{}\fi\let\ifMOVING\iffalse}}%
\ifx\endfigure\undefined\let\@Fendfigure\relax\fi%
\let\@cnORI\caption% \caption is redefined in the table environement :
\def\@tablescaption{\@dblarg\@t@blescaption}% footnote will be only
\def\@t@blescaption[##1]##2{\let\cur@fn\footnote% footnote mark in
                       \def\footnote####1{\footnotemark%tables caption
                       \@fw{-8- \string\footnotetext{####1} perdu}}% and text
                       \@cnORI[##1]{##2}\let\footnote\cur@fn}% will be lost
\def\@temp@{%
            \let\@tbeORI\table% footnotes made like in minipages ...... \table
            \def\table{\let\ifMOVING\iftrue%
                       \let\if@minipage\iftrue%
            \ifLPLAIN\ifFLA\bgroup% 
            \def\@mpfn{mpfootnote}%
            \def\thempfn{\thempfootnote}\c@mpfootnote\z@%
            \let\caption\@tablescaption% allow page footnote in \caption
            \let\@footnotetext\@mpfootnotetext\fi\fi%
            \ifx\@xfORI\undefined%
                       \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
            \fi%
            \@tbeORI}%
            \expandafter\let%
            \expandafter\@dbtbeORI\csname table*\endcsname% .........  \table*
            \expandafter\def\csname table*\endcsname{\let\ifMOVING\iftrue%
                       \let\if@minipage\iftrue%
            \ifLPLAIN\ifFLA\bgroup% 
            \def\@mpfn{mpfootnote}%
            \def\thempfn{\thempfootnote}\c@mpfootnote\z@%
            \let\@footnotetext\@mpfootnotetext\fi\fi%
            \ifx\@xfORI\undefined%
                       \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
            \fi%
            \@dbtbeORI}%
           }%
\ifx\table\undefined\let\@temp@\relax\fi\@temp@%
\def\@Fendtable{%
            \let\@etORI\endtable%................................... \endtable
            \def\endtable{\ifFLA\ifLPLAIN\par%
                          \vskip-\lastskip% make footnotes here
                          \ifvoid\@mpfootins\else\vskip\skip\@mpfootins%
                            \footnoterule\unvbox\@mpfootins\fi%
                          \fi\fi\@etORI\ifFLA\ifLPLAIN\egroup\fi\fi%
                          \ifx\@lim\empty\else\marginpar{\@lim@}%
                             \xdef\@lim{}\fi\let\ifMOVING\iffalse}%
               }%
\expandafter\def\csname @Fendtable*\endcsname{%
            \expandafter\let%
            \expandafter\@dbetORI\csname endtable*\endcsname%......  \endtable*
            \expandafter\def%
            \csname endtable*\endcsname{\ifFLA\ifLPLAIN\par%
                          \vskip-\lastskip% make footnotes here
                          \ifvoid\@mpfootins\else\vskip\skip\@mpfootins%
                            \footnoterule\unvbox\@mpfootins\fi%
                          \fi\fi\@dbetORI\ifFLA\ifLPLAIN\egroup\fi\fi%
                          \ifx\@lim\empty\else\marginpar{\@lim@}%
                             \xdef\@lim{}\fi\let\ifMOVING\iffalse}%
               }%
\ifx\endtable\undefined\let\@Fendtable\relax\fi%
\def\@temp@{\def\endtable{\ifLPLAIN\ifFLA\egroup% \endtable may be \relax
            \expandafter\let\csname endtable*\endcsname\endtable%as in endfloat
                          \fi\fi}%
           }%
\ifx\endtable\relax\@temp@\fi% is also used in frenchll for testing purpose
% continuing definition of \GOfrench
               \let\@lti\labelitemi\let\@ltii\labelitemii%
               \let\@ltiii\labelitemiii\let\@ltiv\labelitemiv%
               \@ifo% define French options, GOfrench part 1
               \let\@ifo\undefined% now release memory
               \@doFh% process language.dat, GOfrench part 2
               \let\@doFh\undefined% release memory
               \let\hyphex\undefined\let\frhyphex\undefined%
               \let\@temp@\undefined%
               \let\ifFTY\iffalse\let\ifFTR\iffalse% if begin language isnt
               \let\ifFLA\iffalse\let\ifFMA\iffalse\let\ifFH\iffalse% french
% assume Left to right for *the* document if TeX--XeT.
               \ifx\beginL\undefined\else%
                   \edef\@fepORI{{\the\everypar}}%
                   \everypar={\csname begin%
                              \beginFWdirection\endcsname\@fepORI}%
               \fi%
               \let\ErrFrench\@Ffnt\def\@Ffnt##1{}%
               \@finput{frpatch.sty}%
               \let\@Ffnt\ErrFrench\let\ErrFrench\undefined% ditto
               \beginlanguage}% now the new language
%%%
\@ifundefined{document}{}% let it undefined..........................\document
    {\let\@dORI\document%...................................  \begin{document}
     \def\document{% \slidesonly of seminar must not gobble me!
                   \ifx\noxcomment\undefined\else%
                       \global\let\@x@hk\xcomment@hook\global\noxcomment\fi%
                   \@dORI% execute original \document
                   \GOfrench% now initiate the style
                   \let\GOfrench\undefined% release memory
                   \ifx\noxcomment\undefined\else\let\xcomment@hook\@x@hk%
                       \expandafter\xcomment@hook\fi}%
                }%
% now reset < ` ' > as other chars
\@makeother`\@makeother<\@makeother>\@makeother'%
% ReRead of aux file at \end{document} may create problems.
% As French things are already applied, so it's unuseful after   \end{document}
\def\@temp@{%
     \def\enddocument{\@CGroup% end any remaining opened << group
                     \ifFLA%
                     \clearpage% output last page in french
                     \gdef\@specialstyle{french}%
                     \fi%
                     \let\endL\relax% no further need.
                     \switchtolanguage\englishTeXmods%
                     \enddocumentasusual%
                     }%
           }%
\ifx\enddocument\undefined%
    \else\let\enddocumentasusual\enddocument%....................  \enddocument
         \@temp@% new def apply
\fi%
%
%                  ===============================
%                  |        Hyphenation          |
%                  ===============================
%
% Allow or not hyphenation of words starting with a capital letter
\def\allowfulluchyph{\uchyph=1\let\@whatUCH\allowfulluchyph%.. \allowfulluchyph
                 \let\@uchbox\empty}%
\def\allowuchyph{\uchyph=1\let\@whatUCH\allowuchyph%.............. \allowuchyph
                 \let\@uchbox\hbox}%
\def\disallowuchyph{\uchyph=-1%................................ \disallowuchyph
                    \let\@whatUCH\disallowuchyph\let\@uchbox\hbox}%
\def\notthyphenation{{\tt\hyphenchar\font=-1}%.................\notthyphenation
                     \let\ifTTH\iffalse}%
\def\tthyphenation{{\tt\hyphenchar\font=`\-}%..................  \tthyphenation
                   \let\ifTTH\iftrue}%
\let\@whatUCH\allowuchyph% is normaly the TeX default 
\let\ifTTH\iffalse% we presume that there no tt hyph. by default 
\let\ifFH\iffalse%we assume we start with no French hyphenation (wrong!)
%
\def\hyphex#1{\if#1\empty%........................................... (\hyphex)
                 \else\edef\@excn{#1}\fi% a general macro for other languages
                 \let\if@FE\iftrue}% \hyphex{} before begin document will 
%                                  % load exceptions files
\def\frhyphex{\if@PMF\else\hyphex{\frenchname}\fi}%.................  \frhyphex
%
%                  ===============================
%                  |       Translations          |
%                  ===============================
%
% The following is to ``repair'' default captions used in standard V2 styles
% prior October 91 as "Figure n:" and "Table n:".
\def\@eatDP{\@ifNextNB:{\@gobble}{}}%
\def\f@ffrench{\ifx\listoffigures\relax\else%
               \figurename\space\thefigure\space--\fi\@eatDP}%
\def\f@tfrench{\ifx\listoftables\relax\else%
               \tablename\space\thetable\space--\fi\@eatDP}%
\def\unnumberedcaptions#1{%...............................  \unnumberedcaptions
     \expandafter\let\csname listof#1s\endcsname\relax%
     \let\unnumberedcaptions\undefined}%
%
% Titles ....................................................... \captionsnames
\@ifundefined{captionsnames}{\def\captionsnames{\relax}% let it be known
                             \@finput{fengl209.sty}}{}% load English captions 
\let\ifnonenglishheadings\iftrue% Bypass to a LaTeX slight bug...
\def\tocreduite#1#2{}% Reduce toc to a toc-summary for \sommaire
\def\@sEAT#1#2{\@sORI*{\sommairename}}%\@mkboth{\sommairename}{\sommairename}
\def\@cEAT#1#2{\@chORI*{\sommairename%\@mkboth{\uppercase{\sommairename}}%
                                     %        {\uppercase{\sommairename}}%
                       }}% normally a \sommaire is short and need no headings
\def\@smr[#1]{\begingroup\ifcase #1 0% Process \sommaire[1-4] 
     \or   \let\l@paragraph\tocreduite%.....\sommaire[1]
           \let\l@subparagraph\tocreduite%
     \or   \let\l@subsubsection\tocreduite%.\sommaire[2]
           \let\l@paragraph\tocreduite%
           \let\l@subparagraph\tocreduite%
     \or   \let\l@subsection\tocreduite%....\sommaire[3] DEFAULT
           \let\l@subsubsection\tocreduite%
           \let\l@paragraph\tocreduite%
           \let\l@subparagraph\tocreduite%
     \else \let\l@section\tocreduite%.......\sommaire[4] 
           \let\l@subsection\tocreduite%
           \let\l@subsubsection\tocreduite%
           \let\l@paragraph\tocreduite%
           \let\l@subparagraph\tocreduite%
     \fi%
     \let\@sORI\section\let\@chORI\chapter%
     \let\section\@sEAT\let\chapter\@cEAT%
     \let\@ToCisNOT\relax% let it be a sommaire first ie there is no toc
     \def\@starttoc##1{% \@startoc locally redefined to let toc reusable 
         \begingroup\makeatletter% any case require a second pass
         \immediate\openin\@ne \jobname.##1 % 
         \if@filesw \expandafter\newwrite\csname tf@##1\endcsname\fi%
         \ifeof\@ne \@Ffnt{\jobname.##1}%
                     \if@filesw\immediate\openout \csname tf@##1\endcsname%
                               \jobname.##1\relax\fi%
         \else\immediate\closein\@ne \relax\@@input \jobname.##1 %
              \@ifundefined{@ToCisNOT}{% let a toc be defined further
                     \if@filesw\immediate\openout \csname tf@##1\endcsname%
                               \jobname.##1\relax\fi}{}%
         \fi\global\@nobreakfalse \endgroup}%
     \tableofcontents\endgroup% print the sommaire
     \def\tableofcontents{% new def that records there is a toc in the doc
         \ifLPLAIN%
% For the "Winter" release all lines containing "Bug in 2e patch 3" should
% probably be deleted, as FMi said: "\protect will probably vanish again with
% the winter release which we hope will have a better protect mechanism."
%           \ifx\documentclass\undefined% Bug in 2e patch 3
         \addtocontents{toc}{\protect%
                             \let% just to be not
                             \protect\@ToCisNOT\protect\empty}% as relax
%           \else% Bug in 2e patch 3
%           \addtocontents{toc}{\protect\@SetEmpty{@ToCisNOT}}%Bug in 2e patch 3
%           \fi% Bug in 2e patch 3
         \fi%
     \begingroup% \@starttoc locally redefined to avoid pb with Atari
          \def\@starttoc####1{\begingroup% normal def without newdef of tf@
                      \makeatletter\@input{\jobname.####1}%
                      \if@filesw\immediate\openout \csname tf@####1\endcsname%
                                \jobname.####1\relax\fi%
                      \global\@nobreakfalse \endgroup}%
     \@tocORI\endgroup}% now the original toc command
     }%\@smr
%\ifx\documentclass\undefined\else% Bug in 2e patch 3
%\def\@SetEmpty#1{\expandafter\let\csname #1\endcsname\empty}%
%\fi% Bug in 2e patch 3
\def\sommaire{\@ifNextNB[{\@smr}{\@smr[3]}%]........................ \sommaire
             }% a Sommaire is a TOC in front of a document
\def\@temp@{\let\if@twocolumn\iffalse}%
\@ifundefined{if@twocolumn}{\@temp@}{}%
\@ifundefined{abstract}{% undefined in book
    \def\abstract{\if@twocolumn\section*{\abstractname}%
                 \else\sm@ller\begin{center}%
                 {\bf\abstractname\vspace*{-.5em}\vspace*{\z@}}% 
                 \end{center}\quotation\fi}%
    \def\endabstract{\if@twocolumn\else\endquotation\fi}}{}%
\@ifundefined{resume}{% there are styles already defining \resume
\let\resume\abstract%.................................................. \resume
\let\endresume\endabstract%......................................... \endresume
                     }{}%
%
\def\keywords{\quotation\noindent\sm@ller\kwname%.................... \keywords
              \let\endkeywords=\endquotation}%.................... \endkeywords
\def\motsclef{\keywords\def\endmotsclef{\endkeywords}}%.............. \motsclef
%                                                  %.............. \endmotsclef
\def\annexe {\@ann{\appendixname}}%................................... \annexe
\def\annexes{\@ann{\appendixname s}}%................................. \annexes
\def\@ann#1{\par\setcounter{chapter}{0}\setcounter{section}{0}%
       \def\@chapapp{\appendixname}\def\thechapter{\Alph{chapter}}%
       %%%\clearpage\addtocontents{toc}{ }% be sure in vertical mode
       \addcontentsline{toc}{chapter}{\protect#1}}%
\@ifundefined{@restonecolfalse}{\def\@restonecolfalse{}%
                                \def\@restonecoltrue{}}{}% dummy def
\@ifundefined{@mkboth}{\def\@mkboth#1#2{}}{}% idem
\ifx\documentclass\undefined% bypass this code for 2e
\let\@wg\@wrglossary% protect \glossary
\def\@wrglossary#1{\let\protect\noexpand% wasn't protected!
                               \@wg{#1}}%...................... (\@wrglossary)
\fi%
\def\glossaire{\@glo{%\protect% 
                     \glossaryname}}%.............................  \glossaire
\def\glossaires{\@glo{%\protect% 
                      \glossaryname s}}%.........................  \glossaires
\def\@glo#1{\setcounter{chapter}{0}\setcounter{section}{0}%
          \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn\fi%
                    \hbox{}% to simulate any text that will allow the writes
                    \clearpage% to be done to the file instead of the terminal
                      \chapter*{#1\@mkboth{\uppercase{#1}}{\uppercase{#1}}}%
                    \addcontentsline{toc}{chapter}{\protect#1}%
          \ifx\undefined\@glossaryfile\else%
                   \immediate\closeout\@glossaryfile%
                    \ifx\undefined\glossaryentry% dummy def .... \glossaryentry
                         \long\def\glossaryentry##1##2{\noindent-- ##1\par}%
                    \fi%
                    \ifx\undefined\theglossary%
% default glossary defs, type \glossary{[entry :] comments}
% and use \printglossary[filename] default is jobname.gls .....  \printglossary
                         \let\theglossary\description%
                         \let\endtheglossary\enddescription%
                         \let\scan@allowedfalse\makeatother% gglo.ist call this
                         \def\pfill##1 {}% nullify page num. unneded
                         \def\@pgf[##1]{\@finput{##1}}%
                         \def\printglossary{\@ifNextNB[%] emacs
                                           {\@pgf}{\@pgf[\jobname.gls]}}%
                    \fi%
          \fi}% \input \jobname.glo will typeset the glossary 
\def\datefrench{%
\def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi%
                 \ifnum\day=1\relax 1\ier%........................ \todayfrench
                 \else \number\day\fi%      
                 \space\ifcase\month\or janvier\or f\'evrier\or mars\or %
                 avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or %
                 octobre\or novembre\or d\'ecembre\fi \space\number\year}%
}\datefrench% no need of \datefrench def for babel <3.6
\def\captionsfrench{%.........................................  \captionsfrench
  \ifx\captionsnames\captionsfrench\else%
   \let\@tdORI\today%................................................... \today
   \let\f@fORI\fnum@figure%.........................................  \fnum@...
   \let\f@tORI\fnum@table%
   \let\@cnsORI\captionsnames%
% The following for styles or classes: article, report and book
   \def\pagename{page}%
   \def\refname{R\'ef\'erences}%
   \def\abstractname{R\'esum\'e}%
   \def\bibname{Bibliographie}%
   \def\contentsname{Table des mati\`eres}%
   \def\listfigurename{Table des figures}%
   \def\listtablename{Liste des tableaux}% 
   \def\indexname{Index}%
   \def\seename{{\em voir}}% used normally in makeidx.sty
   \def\seealsoname{{\em voir aussi}}% added macro  \seealso   
   \def\figurename{{\sc Fig.}}%
%%%\def\figuresepname{:}% if compatibility needed with Shapiro styles
   \def\tablename{{\sc Tab.}}%
   \def\sommairename{Sommaire}%
   \def\partname{\protect\@RPt partie}% "Premi\`ere partie" instead of "Part I"
   \def\@RPt{{\ifcase\value{part}\or Premi\`ere\or Deuxi\`eme\or %
             Troisi\`eme\or Quatri\`eme\or Cinqui\`eme\or Sixi\`eme\or %
             Septi\`eme\or Huiti\`eme\or Neuvi\`eme\or Dixi\`eme\or %
             Onzi\`eme\or Douzi\`eme\or Treizi\`eme\or Quatorzi\`eme\or % 
             Quinzi\`eme\or Seizi\`eme\or Dix-septi\`eme\or Dix-huiti\`eme\or %
             Dix-neuvi\`eme\or Vingti\`eme\fi}\space\def\thepart{}}%
   \def\glossaryname{Glossaire}% added
   \def\kwname{{\bf Mots-cl\'e} : }% 
   \def\draftname{- \noexpand\351preuve -}% PostScript IsoLatin1 \'epreuve
   \def\prefacename{Pr\'eface}%
% The following is also for the letter .....
\ifx\RIfM@\undefined% except for AmSLaTeX V1.2
   \let\fnum@figure\f@ffrench%
   \let\fnum@table\f@tfrench%
\fi%
% The following is only for the letter .....
\ifx\opening\undefined\else%
%  \def\headtoname{\`a\space}% lettre de X \`a Y (inusite en francais)
   \def\headtoname{}%  
   \def\ccname{c.c. }% copie conforme
   \def\enclname{P.j. }% Pieces jointes
   \def\PSname{P.-S. :}% Post-Scriptum
   \def\Objectname{Objet :}% Object of the letter
   \def\YourRefname{v/r\'ef. :}% Your reference number
   \def\OurRefname{n/r\'ef. :}% Our reference number
\fi%
% The following is only for report and book .....s
   \def\chaptername{Chapitre}%
   \def\appendixname{Annexe}%
   \let\captionsnames\captionsfrench%
  \fi% \else of \ifx\captionsnames\captionsfrench%
   \let\today\todayfrench%
\def\@cORI{\@cnsORI% Restore original caption names 
            \let\today\@tdORI%
            \let\fnum@figure\f@fORI%
            \let\fnum@table\f@tORI}%
}%end of captionsfrench
%%%%%%%%%%%%%%%%%%
%                  ===============================
%                  |           Layout            |
%                  ===============================
%                    
% NB: See elsewhere in the code for appearance of \ifFLA, to find
%     all French layout coding.
\@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax%
                                \let\@afterindentfalse\relax}{}%
\let\@aifORI\@afterindentfalse%
\begingroup \catcode `| =0  \catcode `[ = 1 \catcode`] =2% 
            \catcode `\{=12 \catcode `\}=12 \catcode`\\=12% 
            |gdef|@xversatim#1\end{versatim}[#1|end[versatim]]%
            |endgroup% running macro for versatim
%
\def\@FIM@{\ifCG\else\ifFLA\ifEPG\leftguillemets\fi\fi\fi}%
\def\@FIM{% Correct labels in itemize environement ..............  \labelitem..
           \def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}%
           \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}%
           % Indent first paragraphs
           \let\@afterindentfalse\@afterindenttrue%
           \@afterindenttrue%
           % The "order" list ....................  \begin{order} & \end{order}
           \def\labelfrenchenumi{\@FIM@\quando={\arabic{enumi}}}%
           \def\labelfrenchenumii{\@FIM@\quando={\arabic{enumii}}}%
           \def\labelfrenchenumiii{\@FIM@\quando={\arabic{enumiii}}}%
           \def\labelfrenchenumiv{\@FIM@\quando={\arabic{enumiv}}}%
           \def\order{\ifLPLAIN\ifnum \@enumdepth >3 \@toodeep\else%
           \advance\@enumdepth \@ne%
           \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list%
           {\csname labelfrench\@enumctr\endcsname}%
           {\usecounter{\@enumctr}%
     \ifFLA% French layout might be switched after the definition
           \addtolength{\leftmargin}{0.9em}% allow a second digit and <<
           \labelsep   0.1em%
           \itemsep    0.2ex plus 0.1ex minus 0.1ex%
           \topsep     0.2ex plus 0.1ex minus 0.1ex%
           \partopsep  1.6ex plus 0.8ex minus 0.8ex%
     \fi%
           \def\makelabel####1{\hss\llap{####1}}}\fi\fi}%
           \let\endorder =\endlist%
          % The "versatim" environment  ....  \begin{versatim} & \end{versatim}
          % inapropriate for multi-level of indentation!
          \def\versatim{\bgroup\ifFLA% protect our new settings
              \let\dospecials\@dsversa% our specials for versatim
              \def\@xobeysp{\leavevmode{}\space}% allow hypenation at  space
              \ifx\verbatim@font\undefined\let\verbatim@font=\tt\fi%
              \let\@ttORI\verbatim@font%  save the original \tt definition
              \def\verbatim@font{\@ttORI% execute it first to know the font
     \ifLPLAIN% might be used with plain too
                  \verse% now enter verse environment (\itemindent is negative)
                  \vskip-2\parskip%  remove vertical   par   skips
                  \vskip-1\partopsep\vskip-\topsep%
                  \leavevmode%
                  \leftskip=-2\itemindent% the margin is increased
                  \parindent=2\itemindent% each line will go in the margin
                  \parskip\z@% no more interline (interpar) spacing
     \fi%
                  \pretolerance=\@M\tolerance=\@M\hbadness=\@M% max tolerance
                  \hyphenchar\the\font=`\-}%
              \let\tt=\verbatim@font% useful outside NFSS
                               \fi% ifFLA end of \verbatim@font new def
              \let\@xverbatim\@xversatim% define environment
              \verbatim}% now enter usual verbatim
          \def\endversatim{\endverse%
                        \ifTTH\else\hyphenchar\the\font=-1\fi% was a global def
                        \endverbatim\ifFLA\ifLPLAIN%
                                       \vskip+1\partopsep\fi\fi\egroup}%
          \@ifundefined{vers}{%
              \def\@vers##1{\def\@tempa ####1##1{\leavevmode\null####1%
                           \endgroup}\@tempa}%
              \def\vers{%................................................ \vers
                  \begingroup% protect local modifications
                  \def\@xobeysp{\ifFLA\else\penalty\@M\fi\space}% allow
                  \catcode``=13 \@noligs \tt% hyphenation at blank  space
                  % word hyphenation done only if \tthyphenation typed
                  \ifFLA\let\dospecials\@dsversa\fi% 
                  \let\do\@makeother\dospecials\@vobeyspaces \frenchspacing%
                  \@vers}}{}%
}% end of \@FIM
%===================== for the letter .....
\def\@temp@{% a temporary def of all material
\let\@ps@fp\ps@firstpage%
\def\@opening{%
  \@ifundefined{wideletter}{%
  \def\@wideletter{}\def\wideletter{%.............................. \wideletter
                     \def\@wideletter{\leftskip-0.25\indentedwidth}}}{}%
  \@ifundefined{email}{%
  \def\email####1{\def\emailadd{{\tt ####1}}}}{}%....................... \email
       \@ifundefined{emailadd}{\def\emailadd{}}{}%
  \@ifundefined{yourref}{%
  \def\yourref####1{\def\@yourref{####1}}}{}%......................... \yourref
       \@ifundefined{@yourref}{\def\@yourref{}}{}%
  \@ifundefined{ourref}{%
  \def\ourref####1{\def\@ourref{####1}}}{}%............................ \ourref
       \@ifundefined{@ourref}{\def\@ourref{}}{}%
  \@ifundefined{object}{%
  \def\object####1{\def\@object{####1}}}{}%............................ \object
       \@ifundefined{@object}{\def\@object{}}{}%
  \@ifundefined{PS}{%
  \def\PS####1{{\raggedright\PSname\space ####1}}}{}%...................... \PS
  \def\ps@firstpage{\ifFLA%
                     \def\@oddhead{\ifx\undefined\formhead\else%
                                        \bgroup\hss\formhead\hss\egroup\fi}%
                     \def\@oddfoot{\raisebox{-45\p@}[\z@]%
                                  {\hbox to \textwidth{%
                     \ifcase \@ptsize\relax%
                              \normalsize%
                     \or      \sm@ller%
                     \or      \footnotesize%
                     \fi%
                     %\hspace*{100\p@}\fromlocation \hfill \telephonenum
                     \ifx\undefined\formfoot\hfill\else%
                         \bgroup\hss\formfoot\hss\egroup\fi%
                    }}\hss}%
                    \def\@evenhead{}\def\@evenfoot{}%
                    \else\@ps@fp\fi}%
  \long\def\opening####1{% ..........................................  \opening
    \ifFLA%%% these 3 counts not saved for other languages (unnecessary)
          \advance\indentedwidth   by -0.25\longindentation%
          \advance\longindentation by  0.22\textwidth%
          \advance\parindent       by  1.5em% null in standard .....
          %%%
          \thispagestyle{firstpage}% set firstpage allowing the user to
                                   % use \@oddhead & \@oddfoot in \ps@firstpage
          \raggedbottom% force address to remain in the same place
          \ifx\@empty\fromlocation\location{Le}\fi%
%%%% the following is for 2e 961201 beta
%%%\ \\*[-1\baselineskip]% restore correct environnement (specially \\)
          \ifx\@empty\fromaddress\let\fromaddress\space\fi% make an blank box
            {\raggedright\hspace*{-0.25\indentedwidth}%
                         \parbox[t]{0.5\textwidth}{\ignorespaces%
                                    \vbox to 0pt{\fromaddress\vss}}%
             \\*[0.65in]% dont let the date appearing in the window
             \vspace*{-5\baselineskip}\vspace*{60\p@}% error average
             \par}%
          \ifx\@empty\toname% in fact \toname is never empty in LaTeX V2.09!
                            % except if you code \begin{letter}{}
            {\raggedleft\bgroup\fromlocation\space\@date\egroup\par}%
          \else%
            {\raggedleft\begin{tabular}{l}\ignorespaces%
              \toname\\ \toaddress\\*[8\parskip]%
              \fromlocation\space\@date\end{tabular}\par}%
          \fi%
          \ifx\@empty\@ourref\else%
            {\raggedright \hspace*{-0.25\indentedwidth}%
                          \OurRefname\space\@ourref \par}%
          \fi%
          \ifx\@empty\@yourref\else%
            {\raggedright \hspace*{-0.25\indentedwidth}%
                          \YourRefname\space\@yourref \par}%
          \fi%
          \ifx\@empty\@object\else%
            {\raggedright \hspace*{-0.25\indentedwidth}%
                          {\bf\Objectname}\space\@object \par}%
          \fi%
          \par\vspace*{3\parskip}%
          \noindent####1\hfill\vspace*{3\parskip}% no need of \linebreak%
          \@wideletter%
    \else\@oORI{####1}%
    \fi}}%
\def\@closing{%
   \def\closing{\fclosing@[9]}%......................................  \closing
   \def\fclosing{\@ifNextNB[{\fclosing@}{\fclosing@[9]}%]...........  \fclosing
               }%
   \long\def\fclosing@[####1]####2{%
   \ifFLA%
                        \par%\nobreak
                        \vspace{\parskip}\stopbreaks%
                        \ignorespaces ####2\\[####1\medskipamount]%
                        \ifx\@empty\fromaddress\else%
                             \hspace*{-0.25\indentedwidth}%
                             \hspace*{\longindentation}\fi%
                             {\raggedright\begin{tabular}{l}\ignorespaces%
                        \ifx\@empty\fromsig%
                             \fromname%
                        \else \fromsig \fi%
                        \ifx\@empty\emailadd\else\\{\footnotesize%
                                                 {\em email}\/ : \emailadd}\fi%
                        \strut\end{tabular}}\par%
                        \vskip 0pt plus 1fil% un peu d'elasticite
   \else\@cloORI{####2}%
   \fi}%
   \def\endletter{\ifFLA\vskip 0pt plus 3fil\fi% un peu d'elasticite
                  \@elORI}}% @closing
\@ifundefined{opening}{\def\@opening{}\def\@closing{}}%
                      {\let\@oORI\opening\let\@cloORI\closing%
                       \let\@elORI\endletter%
                       \@opening\@closing}%
}% \@temp@
\ifx\opening\undefined\let\@temp@\relax\fi%
\@temp@% only if letter .....
%=====================
%............................................................ \begin{figurette}
\let\ifFLA\iffalse% dummy def for next processing
\def\@temp@{%
\def\figurette{\ifx\@fgeORI\undefined\figure\fi% can't work without figure
               \ifLPLAIN\ifFLA\bgroup%
                \def\@xfloat####1[h]{%
                \expandafter\let\csname end####1\endcsname\endfigurette%
                \vskip\intextsep\def\@captype{####1}\parindent\z@}%
                \@fgeORI[h]\else\figure[h]\fi\fi}%
\def\endfigurette{\ifLPLAIN%.................................   \end{figurette}
                      \ifFLA\vskip\intextsep\egroup\else\@efgeORI\fi%
                      \ifx\@lim\empty\else\marginpar{\@lim@}\xdef\@lim{}\fi%
                   \fi\let\ifMOVING\iffalse}%
           }%
% Hum! \figure might be still undefined, specially with pmfrench
%\ifx\figure\undefined\let\@temp@\relax\fi% so don't test it
\@temp@%
\@ifundefined{@addtoreset}{\def\@addtoreset#1#2{}}{}% Dummy definition
\@ifundefined{newcounter}{\def\newcounter#1{\relax}}{}% idem
% Reset chapter counter when starting a part --> \GOfrench
%
% This is the French pagestyle to use instead in place of plain wrongly
% used by LaTeX in many situations. Quite simple one.
\def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}%
\ifx\ps@fancyplain\undefined% do nothing outside fancyheadings
     \def\ps@french{}%.............................................. \ps@french
\else\@temp@% to avoid pb in case \if@fancy... undefined
\fi%
\let\@sdORI\secdef% will be used at each new sectioning.
\def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}%................. (\secdef)
% We could define \nofrenchpagestyle if necessary (document option).
%\def\nofrenchpagestyle{\let\secdef\@sdORI}%
%
\ifLPLAIN% (\nopagenumbers is defined in plain) 
\@ifundefined{nopagenumbers}{%don't run everywhere............ (\nopagenumbers)
                             \def\nopagenumbers{\ifFLA\pagestyle{empty}%
                                                \thispagestyle{empty}\fi}%
                            }{}%
\fi\def\ifFLA{\ErrFrench}%
%
     \newif\ifnonvoid% still an outer def.
     \newdimen\@FrDimen% general def for the style
\def\@desarm{% the \noeveryparguillemets processing
     \newbox\@FrBoxi\newbox\@FrBoxii\newbox\@FrBoxiii%
     \newbox\@FrBoxiiii\newbox\@FrBoxvi\newbox\@FrBoxvii\newbox\@FrBoxQuotes%
     \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi%
     \def\@setpartozero{\widowpenalty=\z@\clubpenalty=\z@%
         \interlinepenalty=\z@\brokenpenalty=\z@\displaywidowpenalty=\z@}%
     \def\nonvoidtrue{\let\ifnonvoid\iftrue}%
     \def\nonvoidfalse{\let\ifnonvoid\iffalse}%
     \def\@transfervbox##1##2{\nonvoidtrue%
          \loop%
          \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%
                 \unskip}%
          \ifvoid\@FrBoxiii\nonvoidfalse\fi%
          \ifnonvoid%
          \setbox\@FrBoxii=\vbox{\unvbox##2\box\@FrBoxiii}%
          \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii%
          \repeat}%
     \def\@transferaddvbox##1##2{\nonvoidtrue%
          \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%
                \unskip}%
          \setbox##2=\vbox{\box\@FrBoxiii}%
          \setbox##1=\box\@FrBoxi%
          \loop%
          \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%
                 \unskip}%
          \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi%
          \ifnonvoid%
          \setbox\@FrBoxii=\vbox{\unvbox##2%
                 \hbox to \@FrDimen{\copy\@FrBoxQuotes\unhbox\@FrBoxiii}}%
          \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii%
          \repeat}%
    \def\@sendtopage##1{\nonvoidtrue%
          \loop%
          \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%
                 \unskip}%
          \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi%
          \ifnonvoid%
          \unhbox\@FrBoxiii\unskip\break%
          \setbox##1=\box\@FrBoxi%
          \repeat}%
    \def\@stared{\egroup%
          \@transfervbox\@FrBoxvi\@FrBoxvii%
          \@transferaddvbox\@FrBoxvii\@FrBoxvi%
          \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi%
                 \global\setbox\@FrBoxiiii=\lastbox\unskip}%
          \@transfervbox\@FrBoxvii\@FrBoxvi%
          \noindent \@sendtopage\@FrBoxvi%
          \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}%
    \def\@fniv2{\egroup%
          \@transfervbox\@FrBoxvi\@FrBoxvii%
          \@transferaddvbox\@FrBoxvii\@FrBoxvi%
          \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi%
                 \global\setbox\@FrBoxiiii=\lastbox\unskip}%
          \@transfervbox\@FrBoxvii\@FrBoxvi%
          \noindent \@sendtopage\@FrBoxvi%
          \setbox\@FrBoxvii=\vbox\bgroup\@setpartozero%
          \noindent \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}%
    \def\@qqguill{\relax}%
   \def\@staring{\global\setbox\@FrBoxQuotes=\hbox to 0.81em{\@qqguill}\egroup%
          \setbox\@FrBoxvi=\vbox{\unvbox\@FrBoxvii%
                 \global\setbox\@FrBoxiiii=\lastbox\unskip}%
          \@transfervbox\@FrBoxvi\@FrBoxvii%
          \noindent\@sendtopage\@FrBoxvii%
          \setbox\@FrBoxvi=\vbox\bgroup\@setpartozero%
          \hangindent=\wd\@FrBoxQuotes\hangafter=1%
          \setbox\@FrBoxvii=\hbox{\unhcopy\@FrBoxiiii\unskip\unskip%
                 \unpenalty}%
          \@FrDimenS=\@FrDimen \advance\@FrDimenS by -2em%
          \ifvoid\@FrBoxiiii\indent\copy\@FrBoxQuotes%
          \else%
          \parindent=\z@%
          \ifdim \wd\@FrBoxvii>\@FrDimenS \unhbox\@FrBoxvii\break%
          \else \unhbox\@FrBoxvii%
      \fi\fi}%
    \def\@qquotes{\setbox\@FrBoxvii=\vbox\bgroup\@setpartozero}%
}% end \@desarm
% 
\def\@EIM{\def\labelitemi{\@lti}\def\labelitemii{\@ltii}%
          \def\labelitemiii{\@ltiii}\def\labelitemiv{\@ltiv}%
          \let\@afterindentfalse\@aifORI\@afterindentfalse}%
%
{\catcode`.=12\catcode`p=12\catcode`t=12\gdef\auTo@gf#1.#2pt{#1}}%
\def\@FL{% LETTRINES defs for LaTeX only 
\def\automaticlettrine{\ifx\lettrinefontname\undefined%..... \automaticlettrine
                           \def\@tempa####1 ####2\@@{% extract font name
                               \def\lettrinefontname{####1}}%
                           \edef\@tempb{ }%
                           \expandafter\@tempa\fontname%
                           \expandafter\font\@tempb\@@\fi%
                       \let\sv@lf=\lettrinefont}%
\def\noautomaticlettrine{\let\lettrinefontname=\undefined%.\noautomaticlettrine
                         \let\lettrinefont=\sv@lf}% reset font
\ifx\lettrine\undefined%............................................. \lettrine
\def\lettrine{\par%
              \let\@tempa\relax%
              \ifLPLAIN\def\@tempa{\def\@fbr{\fboxrule=\z@}%
                                   \protect\@lettrineS%
                                  }%
              \fi\@tempa}%
\if@PMF\def\@Ettrine[##1]{##1}\let\@ettrine\relax\else%
    \def\@ettrine##1##2\par{\bgroup\parskip=\z@% NFSS requires a
                           {\ly\xdef\bef@ly{\the\font}}% global def!
                           \let\newpage=\relax\let\clearpage=\relax%
                           \let\cleardoublepage=\relax%
                                    \edef\bef@fnt{\the\font}%
                           \ifCG\def\bef@let{}%
                           \else\def\bef@let{\bef@fnt\def\ly{\bef@ly}%
                                             \leftguillemets\space}%
                           \fi\@@ttrine{##1}{##2}\egroup}%
    \def\@@ttrine##1##2{\ifFLA\def\@@ttrnxt{\@@@trine##1\@@{##2}}%
                             \else\def\@@ttrnxt{##1\space\ignorespaces##2}%
                            \fi% fol.hbox to start a new par after 1 line lett.
                       \@@ttrnxt\unskip\par}%
    \def\@@@trine##1##2\@@##3{\@fbr\everypar{}%
%%% start of automatic font calculation (a piece of code coming from Ronan)
    \ifx\lettrinefontname\undefined\let\auTo@lh\undefined%
               \else\let\auTo@lh\lettrinehang%
               \ifx\auTo@lh\undefined\def\auTo@lh{2}\fi%
               \bgroup%
               \ifx\@htfreq\undefined\newdimen\@htfreq\newdimen\@htfbase\fi%
               \setbox0=\hbox{M}\@htfreq=\ht0%
               \def\dimentocount####1{\expandafter\auTo@gf\the####1}%
               \font\@fontreq=\lettrinefontname%
               \setbox0=\hbox{\@fontreq ##1}\@htfbase=\ht0%
               \advance\@htfreq by \auTo@lh\baselineskip%
               \advance\@htfreq by \lineskip% inapropriate increment
               \advance\@htfreq by -\baselineskip%
               \multiply\@htfreq by 100 % To be more precise
               \multiply\@htfbase by 100 %
               \divide\@htfreq by \dimentocount\@htfbase%\relax
               \multiply\@htfreq by \@m%
\global\font\lettrinefont=\lettrinefontname\space scaled \dimentocount\@htfreq%
               \egroup%
    \fi%
%%% end of automatic font calculation
         \setbox0\hbox{%\fbox is eliminated for that measuring
                       {\shortstack{\bef@let{\lettrinefont##1}\relax%
                        \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}%
         \@FrDimenH=\ht0\advance\@FrDimenH by\dp0%
         \@FrDimenS=\@FrDimenH\advance\@FrDimenS by\fboxsep%
         \divide\@FrDimenS by\baselineskip\@FrCount=\@FrDimenS%
         \@FrDimen=\baselineskip\multiply\@FrDimen by-\@FrCount%
         \advance\@FrDimen by\@FrDimenH%
         \ifdim\@FrDimen>0.025\baselineskip \advance\@FrCount by 1\fi%
         \ifx\auTo@lh\undefined\else\@FrCount=\auTo@lh\fi%
         \ifx\lettrinehang\undefined\else\@FrCount=\lettrinehang\fi%
         \@FrDimenI=\wd0%
         \ifdim\fboxrule=\z@\else\advance\@FrDimenI by2\fboxrule%
                                 \advance\@FrDimenI by2\fboxsep\fi%
         \@FrDimenS=\fontdimen2\font\advance\@FrDimenI by+3\@FrDimenS%
         \ifdim\fboxrule=\z@\advance\@FrDimenI by-0.30\@FrDimenS\fi%
         \advance\@FrCount by -1%
                 \@FrDimen=\@FrCount\baselineskip%
         \advance\@FrCount by 1%
         \ifdim\fboxrule=\z@\else\advance\@FrDimen by -\fboxrule\fi%
         \@FrDimenH=-\dp0% to get baseline alignement
         \setbox0\hbox{\ifdim\fboxrule=\z@\kern-\fboxsep\fi%
                       \fbox{\shortstack{{%
                      \def\@LSG{\@fw{-5- d\'efinition de lettrine incorrecte}}%
                          \let\@RSG=\@LSG\bef@let%
                          \lettrinefont\raise-\@FrDimen\hbox{##1}\relax%
                          \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}}%
         \box0\@FrDimen=\@FrDimenH%
              \advance\@FrDimenH by-\@FrCount\baselineskip% 
              \advance\@FrDimenH by \lineskip% inapropriate action 
              \ifdim\fboxrule=\z@\else\advance\@FrDimenH by -\fboxrule\fi%
         \vspace*{\@FrDimenH}% where to write the rest of the line
         \hangindent=\@FrDimenI%
\ifx\lettrinehang\undefined% hangafter change then allowed
         \ifdim\@FrDimen<-0.025\baselineskip% if dp0 > 25/1000 then
               \advance\@FrCount by\@ne% add one more line hangafter
               \divide\@FrDimen by-\baselineskip% and may be it could
               \advance\@FrCount by\@FrDimen% extend past a line.
         \fi%
\fi%
         \ifnum\@FrCount=1\@fw{-6- lettrine \`a revoir}\fi%
         \hangafter=-\@FrCount%
         \noindent\kern-2.5\@FrDimenS%
         \def\@temp@{##2}%
         \ifx\empty\@temp@\@fw{-7- lettrine r\'eduite \`a 1 seule lettre}%
                      \else{\lsc{##2}}\fi\def\@temp@{##3}%
                         \ifx\@temp@\empty\else\space\ignorespaces##3\fi%
                           }%@@@trine
    \def\@Ettrine[##1 ##2 ##3]##4\par{\bgroup\parskip=0pt% NFSS requires a
                                      {\ly\xdef\bef@ly{\the\font}}% global def!
                                      \let\newpage=\relax%
                                      \edef\bef@fnt{\the\font}\@gN% 
                  \ifFLA\def\bef@let{\bef@fnt\def\ly{\bef@ly}##1\space}%
                        \else ##1\space\fi%
                  \@@ttrine{##2}{{\def\@aft@let{##3}\ifx\@aft@let\empty%
                                                     \else##3\space\fi%
                                  \ignorespaces ##4}}\egroup}%
\fi% \if@PMF
\def\flettrine{\par%................................................ \flettrine
               \let\@tempa\relax%
               \ifLPLAIN\def\@tempa{\def\@fbr{}\protect\@lettrineS}\fi%
               \@tempa}%
\def\@lettrineS{\ifx\@FrDimenH\undefined%
                              \newdimen\@FrDimenH\newdimen\@FrDimenI\fi%
                \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi%
                \@ifNextNB[{\@Ettrine}{\@ettrine}%] emacs
               }%
\fi% \lettrine undefined
          }% end of \@FL
%%%%%%%%%%%%%%%%%%
%                  ===============================
%                  |         Typography          |
%                  ===============================
%                    
% Let the possibility to turn all off
\def\nonfrench{\ifFrench\@DFP%.......................  \begin & \end{nonfrench}
               \def\@temp@{\@AFP}% \@AFP only for non LaTeX users
               \else\@NoFr\def\@temp@{\relax}\fi%
               \def\endnonfrench{\@temp@\ignorespaces}%
               \ignorespaces}% 
% Save original settings of \dospecials et \@sanitize
\let\@dsORI\dospecials%...........................\@dospecials.........original
\@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}%
\let\@saORI\@sanitize%............................\@sanitize...........original
% include ! ? ;  : < > ` '  ^ " in dospecials and sanitize:
\def\@dospecialsfrench{\do\`\do'\@dsversa}%..................\@dospecialsfrench
\def\@dsversa{% specials reduced for versatim envir..........\@dsversa
  \do\ \do\\\do\{\do\}\do\$\do\&\do\#\do\|\do\^^K\do\_\do\^^A\do\%\do\~%$emacs
  \do\!\do\?\do\;\do\:\do\<\do\>\do\^\do\"}%
\def\@sanitizefrench{%.........................................\@sanitizefrench
%     \@makeother\ \@makeother\\\@makeother\$\@makeother\&%$emacs
%     \@makeother\#\@makeother\|\@makeother\^^K\@makeother\_%
%     \@makeother\^^A\@makeother\%\@makeother\~%
     \@saORI% get original \@sanitize and add ours:
     \@makeother\!\@makeother\?\@makeother\;\@makeother\:%
     \@makeother\`\@makeother'\@makeother\<\@makeother\>%
     \@makeother\^\@makeother\"}%
%
%\@ifNextNB X {YES} {NO}  ... if next char is X then YES else NO ... \@ifNextNB
\def\@ifNextNB#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet%
     \@tempc\@Fifnch}% 
     \def\@Fifnch{\ifx \@tempc \@tempe\let\@tempd\@tempa% Next char may be an
         \else\let\@tempd\@tempb\fi\@tempd}%            % active space.
\ifx\@ifnextchar\undefined\let\@ifnextchar\@ifNextNB\fi%for plain..\@ifnextchar
%
\def\@skiplastspace{\ifdim\lastskip>\z@\unskip\penalty\@M\fi}%..\@skiplastspace
%
\let\ifFrench\iftrue% temporary setting
\def\@AFP{%................................ \@AFP = Activate French Punctuation
          \let\dospecials\@dospecialsfrench%
          \let\@sanitize\@sanitizefrench%
          \AFPdp\AFPinfsup}%
\def\AFPdp{\ifFrench\catcode`\!=\active\catcode`\?=\active%
              \catcode`\;=\active\catcode`\:=\active\fi}%
\def\AFPinfsup{\ifFrench\ifFG\catcode`\<=\active\catcode`\>=\active\fi\fi}%
\def\AFPq{\ifFrench\catcode`'=\active\catcode``=\active\fi}%
\def\AFPdq{\catcode`"=\active}%
%
\def\@DFP{%............................ \@DFP = Desactivate French Punctuation
           \DFPq\DFPinfsup\ifLPA\else\DFPdp%
                                     \let\dospecials\@dsORI%
                                     \let\@sanitize\@saORI\fi}%
\def\DFPq{\ifFrench\catcode``=12\catcode`'=12\fi}%
\def\DFPinfsup{\ifFrench\catcode`<=12\catcode`>=12\fi}%
\def\DFPdp{\ifFrench\catcode`;=12\catcode`:=12%
                    \catcode`!=12\catcode`?=12\fi}%
\def\DFPdq{\catcode`"=12}%
%
% Typographic process of dots  (default is: let dots macros as usual)
%
\let\@doORI\dots\let\@ldoORI\ldots%
\def\TeXdots{\ifFTY\let\dots\@doORI\let\ldots\@ldoORI\fi}%.............\TeXdots
\def\noTeXdots{\ifFTY\def\dots{...}\def\ldots{...}\fi}%............  \noTeXdots
%
% i dotless (for those who haven't a good text editor)
%
\let\@hatORI\^\let\@treORI\"%
\def\idotless{\ifFTY%...............................................  \idotless
                    \def\^##1{{\expandafter\@hatORI\ifx ##1i\i\else##1\fi}}%
                    \def\"##1{{\expandafter\@treORI\ifx ##1i\i\else##1\fi}}%
              \fi}%
\def\iwithdot{\let\^\@hatORI\let\"\@treORI}%.....(no MlTeX command).  \iwithdot
%
% Typographic process of double punctuation:
%
\def\@tempa#1{\@fw{-13- le caract\`ere "#1" est d\'ej\`a actif}%
              \let\@tempb\next\let\@tempc\empty}% warning message
\let\@tempb\empty% 
\AFPdp% activate first part
\def\@WTS{\relax\ifmmode\else\ifhmode% skip wrong typed space
                                   \ifdim\lastskip>\z@\unskip\fi%
                        \fi\fi}%
% Add a thin space before punctuation ; : and ! in place of a space
\def\@tempc{%
\def;{\ifFTY\protect\@PV{}%................................................ ";"
       \else\ifWTS\@WTS\fi\string;\fi}%
           }%
\ifx;\undefined\else\@tempa{\string;}\fi\@tempc%
\def\@PV{\relax\ifmmode\string;\else%
                              \ifhmode\ifUSP\unskip\space\fi%
                              \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
                         \fi\string;\fi}%
\def\@tempc{%
\def:{\ifFTY\protect\@DP{}%................................................ ":"
       \else\ifWTS\@WTS\fi\string:\fi}%
           }%
\ifx:\undefined\else\@tempa{\string:}\fi\@tempc%
\@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}%
\def\@DP{\relax\ifmmode\string:\else%
                              \ifhmode\ifUSP\unskip\space\fi%
                                    \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
                              \fi%
                         \string:%
         \@beginparpenalty=\@M\relax% Page break forbidden after ":"
         \fi}%                      % but remains imperfect...
\def\@tempc{%
\def!{\ifFTY\protect\@PE{}%................................................ "!"
       \else\ifWTS\@WTS\fi\string!\fi}%
           }%
\ifx!\undefined\else\@tempa{\string!}\fi\@tempc%
\def\@PE{\ifmmode\string!\else%
                              \ifhmode\ifUSP\unskip\space\fi%
                                 \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
                              \fi%
                              \string!\fi}%
\def\@tempc{%
\def?{\ifFTY\protect\@PI{}%................................................ "?"
       \else\ifWTS\@WTS\fi\string?\fi}%
           }%
\ifx?\undefined\else\@tempa{\string?}\fi\@tempc%
\def\@PI{\relax\ifmmode\string?\else%
                            \ifhmode\ifUSP\unskip\space\fi%
                               \ifdim\lastskip>\z@\unskip\penalty\@M%
                               \hskip +0.09em plus 0.07667em%max glue accepted
                               \fi%
                            \fi%
                            \string?\fi}%
\ifx\@tempb\next\let\AFPdp\empty%
                \@fw{la double ponctuation est alors d\'esactiv\'ee}\fi%
\DFPdp\AFPdp% normally a noop but in case of warning...
\ifx\documentclass\undefined\else%............... 2e float placement correction
    \ifx\AFPdp\empty\else% only for activated exclamation mark
    \let\@aORI\@array\def\@array[#1]{\let\@tempa=!\def!{\string!}%
                                     \edef\@tempb{#1}%
                                     \let!=\@tempa\@aORI[\@tempb]}%
    \fi%
\fi% 2e floats
\DFPdp% desactivate first part
%
% Process of guillemets (typed << and >>)%.......................... Guillemets
%
% here is the oldest way to def. guillemets (still useful with plain}
\def\@og{\leavevmode\ifdim\lastskip>\z@\unskip%
                           \penalty-9\hskip0.35em minus 0.35em\fi%
          \raise0.27ex\hbox{$\scriptscriptstyle\ll$}\,\nobreak\ignorespaces}%
\def\@cg{\@skiplastspace\nobreak\,\leavevmode\raise0.27ex%
          \hbox{$\scriptscriptstyle\gg$}}%
\let\ifFG\iftrue% set the default
\AFPinfsup% activate for guillemets
% special definition for \lettrine and \flettrine:
\def\@gN{\def<##1{\ifx ##1<\leftguillemets\else\@LSG##1\fi}%
         \def>##1{\ifx ##1>\rightguillemets\else\@RSG##1\fi}}%
\let\@oldog\<\let\@oldcg\>% let it run if previously defined
\def\@ogx<{\ifFTY\@og\else\@DOG\fi}%
\def\@cgx>{\ifFTY\@cg\else\@DFG\fi}%
% Guillemets must not be typed \<< and \>>, the following is for compatibility
%\def\<{\@ifNextNB<{\@ogx}{\@oldog}}%
%\def\>{\@ifNextNB>{\@cgx}{\@oldcg}}%
%
%\def<{\ifnum\catcode`< =\active% look at \normalbrackets................. "<<
%      \expandafter\@genGL\else\@LSG\fi}% \EBCDICbrackets are different
\def\@@LFG{\ifFTY\ifmmode\protect\@LSG\else%
                          \ifIEB\@SOC\else\@LSG\fi% EBCDICbracket 
                 \fi%
            \else\@LSG\fi}%
\global\let\ifCG\iftrue\let\@CGroup\relax%
\def\@@LG{\relax\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}%
\def\@SifDOGon{\global\let\ifDOG\iftrue}% set scnd level of guillemets flag
\def\@SifDOGoff{\global\let\ifDOG\iffalse}\@SifDOGoff% now set it off
\def\@@@OG{\ifCG\ifFLA\ifEPG\else% now be tolerant... in noeverypar
       \hbadness=10000% all this stuff is really dirty !
       \bgroup\def\par{}%
       \@FrDimen=\textwidth% line size on mono-column
                   \if@twocolumn\tolerance=5000\pretolerance=5000%
                                \advance\@FrDimen by -\columnsep%
                                \divide\@FrDimen by 2\fi% for two-column
       \@ifundefined{@inAlist}{}{% revisite box size in a list environment
       \advance\@FrDimen by -\leftmargin\advance\@FrDimen by -\rightmargin%
       \advance\@FrDimen by -\listparindent\hsize=\@FrDimen}%
       \@qquotes\fi\fi\fi%
     \@oguills%
       \ifFLA\ifEPG\bgroup\def\@currenvir{guillemets}% simulate an environment
                   \let\@CGroup\egroup\fi\fi%  for error processing
       \ifCG\ifFLA\ifEPG% save the current \everypar and apply it first
                       \xdef\@epORI{{\the\everypar}}%
                       \everypar={\@epORI\@oguills\kern0.31em}\fi\fi%
       \else\@SifDOGon\@AG% ancient guillemets featuring 
       \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi%
       \global\let\ifCG\iffalse%
       \ifUSP\kern+0.13em\penalty\@M\ignorespaces%
             \else\kern-0.19em\relax\penalty\@M\fi}%likely as \ignorespaces\fi
\def\@AG{\ifAG\let\@LP\@RP\fi}% Apply ancient guillemets if required 
\def\fguillemets{<<}% a cs for the 8-bit char ...................  \fguillemets
\def\@oguills{%
     \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}% avoid duplicate <<
     \@ifundefined{ly}{\@og}%
          {\leavevmode\ifECM\hbox{{\ifGIAF\else\@MYrm\fi%
                                   \char\rq\@LP\kern+0.20em}}%
                      \else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi%
           \nobreak}}{}\egroup}%
%\def>{\ifnum\catcode`> =\active% look at \normalbrackets................. ">>"
%      \expandafter\@genGR\else\@RSG\fi}% \EBCDICbrackets are different
\def\@@RFG{\ifFTY\ifmmode\protect\@RSG\else%
                         \ifIEB\@SFC\else\@RSG\fi% EBCDICbracket
                 \fi%%
           \else\@RSG\fi}%
\def\@SifFTY{\let\ifFTY\iffalse}% to turn of FTY temporary
\def\@@RG{\relax\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}%
\def\endfguillemets{>>}%......................................  \endfguillemets
\ifx\RIfM@\undefined\else% for AmSTeX we force \nofrenchguillemets
  \message{^^J -18- \frenchname.sty force l'option %
           \string\nofrenchguillemets\space en maths avec AmSLaTeX.}%
  \edef\@emORI{\the\everymath\relax}%\nofrenchguillemets may be still undefined
                   \everymath={\csname nofrenchguillemets\endcsname\@emORI}%
  \edef\@edORI{\the\everydisplay\relax}% thus we differ expansion
                   \everydisplay={\csname nofrenchguillemets\endcsname\@edORI}%
\fi%
\DFPinfsup% desactivate for guillemets 
\def\@@FG{\ifUSP\unskip\kern+0.13em\else%
                 \ifdim\lastskip>\z@\unskip% skip previous space 
                             \penalty\@M% don't break here
                             \space% better than \kern
%                            %\hskip 0pt% add null glue to balance left spacing
%                            %           plus 0.167em minus 0.167em% 
                             \penalty\@M%
%                            %\kern+0.30em%
                 \fi% 
                 \kern-0.19em%
          \fi%
%%%     \ifdim\fontdimen\@ne\font>\z@\kern+0.167em\fi% italic correction simulated
     \ifGIAF\else\ifdim\fontdimen\@ne\font>\z@\/\fi\fi%italic correction simulated
     \ifCG\@fw{-14- fermeture de guillemets non ouverts}\fi% 
     \@CGroup\@fguills% end group if any and put closing guillemets 
     \ifDOG\ifFLA\ifEPG\else\@fniv2\fi\fi%
           \@SifDOGoff\else\@@@FG\fi% reset secnd and first level
% following code would be fine but doesn't run:
%     \@ifNextNB\space{\penalty-\@highpenalty}{}% allow break if space after
          }%
\let\guillemets\@@LG%................................  \begin & \end guillemets
\def\endguillemets{\ifFTY\@@RG% Assume first closing >> and print it
                    \@CGroup\@@@FG\relax\fi}% end second level >> 
\def\@@@FG{\ifFLA\ifEPG\ifx\@epORI\undefined\else% \everypar is  restored
                           \expandafter\everypar=\@epORI\fi%
                       \xdef\@epORI{{}}% any way \xdef can be cleared
                       \else\@staring\@stared\egroup\fi\fi%
           \global\let\ifCG\iftrue\let\@CGroup\relax}%
\def\@fguills{\@ifundefined{ly}{\@cg}%  ECM
       {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@MYrm\fi%
                                        \kern+0.20em\char\rq\@RP}}%
                        \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}}%
%
\def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}%
\def\@frq{{\catcode`'=12{\ifNEQ\ifECM\char\rq001\else\char\rq023\hbox{}\fi%
                               \else\string'\fi}}}%
\AFPq% activate quoting
\def`{\protect\@PLQ}%..................................................... "``"
      \let\@PLQ@\lq% 
      \def\@PLQ{\ifmmode\string`\let\@PLQ@\relax%
                \else\ifNED\let\@PLQ@\@PLQn\fi% may start a par.
                     \ifhmode\let\@PLQ@\@PLQn\fi%
                \fi\@PLQ@}%
      \def\@PLQn{\@ifNextNB`{\protect\@OQ}%
                            {\ifNEQ\ifECM\char\rq000\else\char\rq022\hbox{}\fi%
                             \else\string`\fi}%
                }%
      \def\@OQ`{\ifNED\protect\@@LG\else\string``\fi}%
\def'{\protect\@PRQ}%..................................................... "''"
       \let\@PRQ@\rq% set the default
       \def\@PRQ{\ifmmode\def\@PRQ@{^\bgroup\prim@s}%
                 \else\ifhmode\let\@PRQ@\@PRQn\fi%
                 \fi\@PRQ@}%
       \def\@@FGp'{\@@FG}%
       \def\@PRQn{\let\@PRQ@\rq% reset the default
                  \@ifNextNB'{\ifNED\let\@PRQn@\@@FGp%
                              \else\let\@PRQn@\relax\string'\fi\@PRQn@}%
                             {\protect\@normalrq}}% 
% 
% SUBOPTIONS definitions............................................ SUBOPTIONS
%
\def\noenglishdoublequotes{\AFPq\let\ifNED\iftrue%...... \noenglishdoublequotes
                           \ifFrench\let\@cilq='\fi}%
\def\noenglishquote{\AFPq\let\ifNEQ\iftrue%................... \noenglishquote
                    \ifFrench\let\@cilq='\fi}%
\DFPq% disactivate quoting
\def\englishdoublequotes{\let\ifNED\iffalse%.............. \englishdoublequotes
                         \DFPq\ifFrench\let\@cilq='\fi}%
\def\englishquote{\let\ifNEQ\iffalse\DFPq%...................... \englishquote
                  \ifFrench\let\@cilq='\fi}%
\def\labelsinmargin{\let\if@labelsinmargin\iftrue}%............ \labelsinmargin
\def\nolabelsinmargin{\let\if@labelsinmargin\iffalse}%........\nolabelsinmargin
\def\untypedspaces{\let\ifUSP\iftrue}%.........................  \untypedspaces
\def\typedspaces{\let\ifUSP\iffalse}%............................  \typedspaces
\def\letpunctuationactivefor{%........................ \letpunctuationactivefor
                             \global\let\ifLPA\iftrue%
 \def\wrongtypedspaces{\global\let\ifWTS\iftrue}%.............\wrongtypedspaces
                            }%
\def\wrongtypedspaces{\@fw{-17- \string\wrongtypedspaces\space est % 
                           inop\'erant dans ce contexte}}%
\def\nowrongtypedspaces{\global\let\ifWTS\iffalse%......... \nowrongtypedspaces
     \ifLPA\DFPdp% don't change \dospecials and \@sanitize
     \fi\global\let\ifLPA\iffalse}% it might be dangerous 
% With \tabbingaccents you can't put a diacritic (` or ') on a blank space
% but it's okay for all letters. Useless in full 8bits with ECM!
% Useless too with the initex stuff of the French distribution. 
\def\tabbingaccents{\let\@ifTA\iffalse}%......................  \tabbingaccents
\def\notabbingaccents{\let\@ifTA\iftrue}%...................  \notabbingaccents
%
\AFPq%
% tabbing environment is modified to be able to put diacritics
\def\@temp@{%
      \def\tabbing{\def\@tempa{\let`=\lq\let'=\@normalrq}%............ \tabbing
% \noenglishquote and \noenglishdoublequotes will do nothing in \tabbing
                   \ifNED\@tempa\fi\ifNEQ\@tempa\fi%
                   \def\@tempa{\let\@ifTA\iftrue}%
                   \ifFTY\else\expandafter\@tempa\fi%
                   \ifFTY\@ifTA\else%
      \let\@trjORI\@tabrj\let\@tlabORI\@tablab%
      \let\@ORIrj=\`\let\@ORIlab=\'%
      \def\@@tabrj{\ifcat\@tempc\space\let\@tempa=\@trjORI%
                         \else\let\@tempa=\@ORIrj\fi\@tempa}%
      \def\@@tablab{\ifcat\@tempc\space\let\@tempa=\@tlabORI%
                         \else\let\@tempa=\@ORIlab\fi\@tempa}%
      \def\@tabrj{\futurelet\@tempc\@@tabrj}%
      \def\@tablab{\futurelet\@tempc\@@tablab}%
                   \fi\fi\@tgORI}%
           }%
\ifx\tabbing\undefined%
     \else\let\@tgORI\tabbing%put diacritics \` & \' 
          \@temp@% new def apply
\fi%
\DFPq%
%
\AFPinfsup% activate < and >
\def\EBCDICbrackets{\let\ifIEB\iftrue%......................... \EBCDICbrackets
                  \ifFG%
                  \def<{\protect\@LFG}%old code generate \ifnum incompatibilty
                  \def\@LFG{\@ifNextNB<{\protect\@OG}{\@@LFG}}%
                  \def\@OG<{\ifnum\catcode`< =\active\expandafter\@@LG%
                             \else\@@LFG\@@LFG\fi}%
                  \def>{\protect\@RFG}%
                  \def\@RFG{\@ifNextNB>{\protect\@FG}{\@@RFG}}%
                  \def\@FG>{\ifnum\catcode`> =\active\expandafter\@@RG%
                             \else\@@RFG\@@RFG\fi}%
                  \fi}%
\long\def\@BracesOrNot[#1]{\ifmmode\@PreserveBraces[#1]\else\expandafter#1\fi}%
\long\def\@genG#1#2#3{\ifx#2#3\expandafter\protect\csname @@#1G\endcsname%
                  \else\csname @@#1FG\endcsname\expandafter\@BracesOrNot%
                                \expandafter[\expandafter{%
                                \expandafter#3\expandafter}\expandafter]%
                 \fi}%
\edef\@genGL{\noexpand\@genG{L}\noexpand<}%
\edef\@genGR{\noexpand\@genG{R}\noexpand>}%
\def\normalbrackets{\let\ifIEB\iffalse%........................ \normalbrackets
                \ifFG%
     \def<{\ifnum\catcode`< =\active\expandafter\expandafter%
                                    \expandafter\@genGL\ifmmode\relax\fi%
           \else\@LSG\fi}%
     \def>{\ifnum\catcode`> =\active\expandafter\expandafter%
                                    \expandafter\@genGR\ifmmode\relax\fi%
           \else\@RSG\fi}%
                \fi}%
\DFPinfsup% desactivate < and >
\let\ifFG\iffalse% default further choice
\def\ancientguillemets{\let\ifAG\iftrue}%................... \ancientguillemets
\def\todayguillemets{\let\ifAG\iffalse}%...................... \todayguillemets
\def\guillemetsinallfonts{\let\ifGIAF\iftrue}%........... \guillemetsinallfonts
\def\guillemetsinroman{\let\ifGIAF\iffalse}%................ \guillemetsinroman
\def\overfullhboxmark{\ifFLA\overfullrule=5pt\fi}%..........  \overfullhboxmark
\def\nooverfullhboxmark{\ifFLA\overfullrule=0pt\fi}%....... \nooverfullhboxmark
%
\let\ifFrench\iffalse% reset original value
%
% For compatibility with MlTeX docs but unneeded in this style%...\fhyph \ehyph
{\def\@genMLhyph{\@ifundefined{french}{}{\gdef\fhyph{\french}}%
                 \@ifundefined{english}{}{\gdef\ehyph{\english}}}%
\@ifundefined{fhyph}{\ifopenin\@genMLhyph% \openin pb
                     \else\gdef\fhyph{\FR}\gdef\ehyph{\US}\fi% \openin pb
                    }{}}%
%
\gdef\frenchTeXmods{%............................................\frenchTeXmods
     \global\let\ifFrench\iftrue%         
     \@AFP% activate French punctuation
     \frenchtypography\frenchtranslation\frenchlayout\frenchmacros%
     \let\@HifORI\@Hif\let\@HfiORI\@Hfi%
     \frenchhyphenation%
% TeX-XeT first direction of writing will be set by the first \everypar
%     \csname beginL\endcsname% set TeX--XeT first direction of writing
     \@ufo%  user options
     \let\switchtolanguage\endfrench%
     \ignorespaces%
                   }%end \frenchTeXmods
\let\extrasfrench\frenchTeXmods%
%
\@ifundefined{switchtolanguage}{%
    \def\switchtolanguage#1{#1}}{}%.(style depending)........ \switchtolanguage
\let\@stlORI\switchtolanguage
\def\endfrench{%............................................. \endfrench
    \csname endL\endcsname% stop TeX--XeT first direction of writing
     \@DFP%
     \nofrenchtypography\nofrenchtranslation\nofrenchlayout%
     \nofrenchmacros%
     \nofrenchhyphenation% 
     \let\@Hif\@HifORI\let\@Hfi\@HfiORI%
     \let\switchtolanguage\@stlORI%
     \let\ifFrench\iffalse\@stlORI%
     \ignorespaces}% end of \endfrench
\let\noextrasfrench\endfrench%
%
\def\frenchtest{\@finput{french.tst}}% The Torture Test ........... \frenchtest
\def\frenchdoc{\@finput{frfrench.doc}}% The Documentation ......... \frenchdoc
%
%%%%%%%%%%%%%%%%%%
%                  ===============================
%                  |  Language switch mechanism  |
%                  ===============================
%                    based on language.dat file 
%                    
\@ifundefined{englishTeXmods}{\gdef\englishTeXmods{}}{}%....... \englishTeXmods
%
\global\let\@Hif\empty\global\let\@Hfi\empty% dflt \if...\fi hyphenation switch
\global\let\if@FE\iffalse% don't reload hyphenation exception if not required.
\newif\if@more\@moretrue%
\def\@doFh{% define processing for reading language.dat at \begin{document}
           \bgroup% there is a marmelade here for a temporary usage.
           \newcount\@FrCount%
\def\tl@ng##1{}% no need at this time to test if \<language>TeXmods is defined
\def\ERRdat{\errmessage{-9- Corrupted/absent language.dat file.}%
            \@ifundefined{enddocument}%
                                    {\gdef\enddocument{\csname bye\endcsname}}%
                                    {}%
            \global\let\french\enddocument}%
\def\@rhef##1/##2/{\def\@tempa{##2}%reloading of hyphenation exceptions files
           \def\@tempb{##1}% language name
           \def\@tempc{\ifx\space\@tempa\else\expandafter\@@input##2\relax\fi}%
           \ifx\undefined\@excn\@tempc\else\ifx\@tempb\@excn\@tempc\fi\fi}%
\gdef\NouveauLangage[##1]##2{%....................... \NouveauLangage[##]{name}
%-- check for an anormal change in language.dat:
    \expandafter\@ifundefined{l@##2}{}% do nothing, unused at initex
    {% First accept babel definitions (\chardef) of languages.
     \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else%
     \edef\l@no{##1}\expandafter%
     % Secondly accept our own defs. 
    \ifx\csname l@##2\endcsname\l@no% OK
    \else\typeout{^^J \frenchname.sty: -27- language ##1 (##2) was initially %
         (at initex) numbered \csname l@##2\endcsname\space(ERROR!)}\ERRdat%
    \fi\fi}%
%--
            \expandafter\tl@ng\csname##2TeXmods\endcsname%
            \expandafter\gdef\csname##2\endcsname%
            {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname%
             \@Hif\language=##1\@Hfi\relax}}%
% test if #1 equal ``='' that means same language hyphenation but a dialect.
\edef\@temp@{=}%
\def\@langue##1##2 ##3 ##4/##5{\def\@tempa{=}\def\@tempb{##1}%
    \ifx\@tempa\@tempb%
            \ifnum\@FrCount > 0 \advance\@FrCount by -1\fi%
            \relax% relax Max! Why is it absolutely needed?
            \expandafter\NouveauLangage\expandafter[\the\@FrCount]{##2}%
                      \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi%
    \else\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}%
    \fi}%
\def\@l@ngue##1 ##2 ##3/##4{\NouveauLangage[##4]{##1}% 
%\typeout{La langue ##1 est utilis\'ee sous le num\'ero \the\@FrCount}
         %\expandafter\@@input##2\relax%% loading of patterns is done at initex
          \if@FE\@rhef##1/##3/\fi}% end of \NouveauLangage
\ifopenin%
\openin1 = language.dat \def\@tempb{}
\ifeof1\@Ffnt{language.dat}
       \ifx\undefined\french % language.dat is absent but \french might be def.
           \else\xdef\@PrevF{\french}%
                \gdef\french{\switchtolanguage\frenchTeXmods\@PrevF}%
                {\@PrevF\@fw{-15- le langage \frenchname\space porte le %
                  num\'ero \the\language}}%
       \fi%
       \ifx\undefined\l@english % any default English language number?
           \def\l@english{0}% set it
       \fi%
       \ifx\undefined\english % check English (fengl209.sty usally loaded)
           \else\xdef\@PrevE{\language=\l@english}% 
                \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}%
                {\@PrevE\@fw{-16- the English language\space is numbered %
                  \the\language}}%
       \fi
\else\@FrCount=-1%
\loop  \endlinechar=-1  \read1 to \@lineD  \endlinechar`\^^M%
  \ifx\@lineD\empty  \else \advance\@FrCount by 1%
    \edef\@lineD{\@lineD\space\space/\the\@FrCount}%
    \expandafter\@langue\@lineD%
  \fi%
  \ifeof1 \@morefalse \fi%
  \if@more\repeat%
\fi\closein1%
\else% \openin pb of OzTeX
     \gdef\french{\switchtolanguage\frenchTeXmods\fhyph}%
     \gdef\english{\switchtolanguage\englishTeXmods\ehyph}%
\fi% \openin pb of OzTeX
\def\@MLtst{\@ifundefined{fhyph}% if French and \fhyph undef. (no language.dat)
     {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}%
          \@fw{-19- utilisation du langage interne num\'ero \the\language}%
          \else\typeout{^^J \frenchname.sty: -20- 
                        the French language is undefined  (ERROR!)}\ERRdat\fi}%
%if \fhyph defined as in MlTeX then :
     {\gdef\french{\switchtolanguage\frenchTeXmods\fhyph}%
      \gdef\english{\switchtolanguage\englishTeXmods\ehyph}%
     }%
           }%@MLtst
\@ifundefined{french}{\@MLtst}{}% French might be still undefined!
\@ifundefined{endenglish}{\global\let\endenglish\french}{}% and \endenglish
\gdef\tl@ng##1{\ifx ##1\relax\@fw{-21- ##1 n'est pas d\'efini}\fi}%
          \egroup% this is the end of the marmelade
          }% end of \@doFh (\GOfrench part 2)
%%%%%%%%%%%%%%%%%%
%
%                  ===============================
%                  |       Macros for help       |
%                  ===============================
%
% Abbreviations 
\def\@abbf[#1]{\def\abbrevfilename{#1}}%
\AFPdq% Activate " char for the following coding
\def\abbreviations{\if@PMF\else\AFPdq\fi%......................  \abbreviations
                   \@ifNextNB[%] emacs
                   {\@abbf}{\@abbf[frabbrev.tex]%
                   \@abbdefs\let\@abbdefs\relax}}%
\if@PMF\let\@abbdefs\relax\else% no need in poor man french
\def\@abbdefs{% the needed defs for abbrevs
   \def\ABBfound{\global\let\ifABBfound\iftrue}%
   \let\ifABBfound\iffalse%
   \def\@abbrev##1 ##2 ##3/{\edef\@tempa{##1}\edef\@tempb{##2}% 
                       \let\ifFMA\iftrue% allways true here
                       \ifx\@tempa\@tempb##3\ABBfound\fi}%
   \def\@openabbrev##1{\openin1=##1 \ifeof1\@Ffnt{##1}\fi}%
   \def"{\protect\AbbrevName}%"........................................... "xx"
   \def\AbbrevName##1"{\def\@tempa{##1}\ifx\@tempa\space``\space''%
                                        \else\@@bbrev##1"\fi}%
   \def\@@bbrev##1"{\begingroup%
\def\ABBMfalse{\global\let\ifABBM\iffalse}%
                     \let\ifABBM\iftrue\global\let\ifABBfound\iffalse%
\ifopenin%
                     \@openabbrev{\abbrevfilename}%
   \ifeof1\else%
   \loop\endlinechar=-1\read1 to \@lineD\endlinechar`\^^M%
     \ifx\@lineD\empty%
         \else\edef\@lineD{##1 \@lineD/}\expandafter\@abbrev\@lineD\fi%
     \ifABBfound\ABBMfalse\fi%
     \ifeof1 \ABBMfalse\@fw{-22- abr\'eviation de %
         \string"##1\string" non trouv\'ee}\fi%
     \ifABBM\repeat%
   \fi\closein1%
\fi% OzTeX openin pb
   \ifABBfound\else``##1''\fi\endgroup}%
             }% end of \@abbdefs
\fi% \if@PMF
\DFPdq% Deactivate " char
\def\noabbreviations{\if@PMF\else\DFPdq\fi}%.................  \noabbreviations
%
\catcode`\/=0{\catcode`/\=12/gdef/@boi{{/protect/string\}}}%}emacs+TeX
/catcode`/\=0\catcode`\/=12%
% Save original macros if they exist before the French option loading
   \ifx\at\undefined\else\let\@atORI\at\fi%
   \ifx\vert\undefined\else\let\@bvORI\vert\fi%
   \let\@bsORI\backslash%
   \ifx\chap\undefined\else\let\@chapORI\chap\fi%
   \let\@tildeORI\tilde%
   \ifx\numero\undefined\else\let\@numORI\numero\fi%
   \ifx\numeros\undefined\else\let\@numsORI\numeros\fi%
   \ifx\Numero\undefined\else\let\@NumORI\Numero\fi%
   \ifx\Numeros\undefined\else\let\@NumsORI\Numeros\fi%
   \ifx\degre\undefined\else\let\@degreORI\degre\fi%
   \ifx\degres\undefined\else\let\@degresORI\degres\fi%
   \ifx\ieme\undefined\else\let\@iemeORI\ieme\fi%
   \ifx\iemes\undefined\else\let\@iemesORI\iemes\fi%
   \ifx\ier\undefined\else\let\@ierORI\ier\fi%
   \ifx\iers\undefined\else\let\@iersORI\iers\fi%
   \ifx\iere\undefined\else\let\@iereORI\iere\fi%
   \ifx\ieres\undefined\else\let\@ieresORI\ieres\fi%
   \ifx\fsc\undefined\else\let\@fscORI\fsc\fi%
   \ifx\lsc\undefined\else\let\@lscORI\lsc\fi%
   \let\@ntsORI\!%
\def\@ifm{%\noabbreviations% this is the default
% original commands would be better preceeded by \expandafter
   \def\at{\ifFMA\string @\else\@atORI\fi}%         at char .............  \at
   \def\vert{\ifmmode\@bvORI%                        |       ...........  \vert
             \else\ifFMA\string |\else\@bvORI\fi\fi}%
%  \let\bv\vert% \bv will be obsolate
   \def\backslash{\ifmmode\@bsORI%(barre oblique inversee)  ....... \backslash
                   \else\protect\@boi\fi}%
%  \let\boi\backslash% \boi will be obsolate
   \def\chap{\ifFMA\string ^\else\@chapORI\fi}%     hat char ..........  \chap
   \def\tilde{\relax\ifFMA\ifmmode\@tildeORI%       tilde char......... \tilde
                    \else\string~\fi\else\@tildeORI\fi}%
%  \def\No{\kern-.25em\lower.2ex\hbox{\degre}}% number char(obsolete)
   \def\@Fsp##1{\ifFMA$^{\mathrm ##1}$\else##1\fi}%
   \def\@umer##1{\@Fsp{##1}\kern.2em\ignorespaces}%
   \def\numero{\ifFMA n\@umer{o}\else\@numORI\fi}%    n^o  ........... \numero
   \def\Numero{\ifFMA N\@umer{o}\else\@NumORI\fi}%    N^o  ........... \Numero
   \def\numeros{\ifFMA n\@umer{os}\else\@numsORI\fi}% n^os ........... \numeros
   \def\Numeros{\ifFMA N\@umer{os}\else\@NumsORI\fi}% N^os ........... \Numeros
   \edef\degre{\ifFMA{\ifECM\char\rq006\else\char\rq27\fi}\space%
               \else\@degreORI\fi}%                 degree  char....... \degre
   \def\degres{\ifFMA\@Fsp{o}\else\@degresORI\fi}%    degrees sign..... \degres
   \def\leftguillemets{\ifFMA\@oguills%          <<  char...\leftguillemets
                             \else<<\fi}%
   \def\rightguillemets{\ifFMA\@fguills%         >>  char..\rightguillemets
                             \else>>\fi}%
   \def\fup##1{\ifFMA\leavevmode\raise+0.55ex%
                \hbox{\protect\sm@ller\lowercase{##1}}\kern+.17em%....... \fup
               \else##1\fi}%
%  \def\up##1{\raise 1ex\hbox{\protect\sm@ller##1}}% now obsolate
   \def\ieme{\ifFMA\protect\fup{e}\else\@iemeORI\fi}%    ieme  sign..... \ieme
   \def\iemes{\ifFMA\protect\fup{es}\else\@iemesORI\fi}% iemes sign..... \iemes
   \def\ier{\ifFMA\protect\fup{er}\else\@ierORI\fi}%     ier   sign..... \ier
   \def\iers{\ifFMA\protect\fup{ers}\else\@iersORI\fi}%  iers  sign..... \iers
   \def\iere{\ifFMA\protect\fup{re}\else\@iereORI\fi}%   iere  sign..... \iere
   \def\ieres{\ifFMA\protect\fup{res}\else\@ieresORI\fi}%ieres sign..... \ieres
%   \def\fsc##1{\ifFMA\leavevmode{% ................ small caps for names \fsc
%                     \sc\@uchbox{\expandafter\@fsc##1/}}\else\@fscORI\fi}%
%       \def\@fsc##1##2/{\uppercase{##1}\protect\@lsc{##2}}%
% \fsc is really more complicated with 2e.
%   \def\fsc##1{\protect\fsc@##1\@@}% the final \fsc definition waiting patch
   \def\fsc@@@@##1{\fsc@##1\@@}%
   \def\fsc{\protect\fsc@@@@}% 2e Alpha
% Still bugged bec \fsc{{{...}}} generates a wrong output
   \def\fsc@##1##2\@@{\ifFMA\leavevmode{%........... small caps for names \fsc
                      \sc\@uchbox{\let\protect\@empty%
                                  \let\@typeset@protect\@empty%
                                  \let\@changed@x\@changed@x@mouth%
                                  \if\relax\noexpand##1\fsc@@@##1##2\@@%
                                   \else\edef\@tempa{##1}%
                                       \expandafter\fsc@@\@tempa##2\@@%
                                  \fi}}%
                      \else\@fscORI##1\fi}%
   \def\fsc@@##1##2\@@{\uppercase{##1}\lsc@{##2}}% remove one surrounding {}
   \def\fsc@@@##1##2##3\@@{\uppercase{##1{##2}}\lsc@{##3}}%
%
   \def\lsc{\protect\lsc@}%........... allways lower case small caps \lsc
   \def\lsc@##1{\ifFMA\leavevmode{\sc\@uchbox{\lowercase{##1}}}%
                 \else\@lscORI##1\fi}%
%.........................................  \primo  \secundo  \tertio  \quarto%
%((((.....................................  \primo) \secundo) \tertio) \quarto)
%% \newcount\@FrCount% already defined when reading language.dat
   \def\@FE{%( emacs
             \@ifNextNB){\@@FPE}{\@@FE}}%
   \def\@@FE{\the\@FrCount$^{\mathrm o}$\kern+.29em}%
   \def%( emacs
        \@@FPE){\the\@FrCount\kern-.25em\lower.2ex\hbox{\degre}%
                \kern-.55em%(emacs
                            )\kern+.3em}%
   \def\quando=##1{\@FrCount=##1\@FE}%(emacs..........  \quando=n or \quando=n)
   \def\primo{\@FrCount=1\@FE}%
   \def\secundo{\@FrCount=2\@FE}%
   \def\tertio{\@FrCount=3\@FE}%
   \def\quarto{\@FrCount=4\@FE}%
\let\quatro\quarto% \quatro is obsolate, should be removed
   \def\minMAJ{\ifx\protect\relax\else\expandafter\protect\fi\minMA@}%
   \def\minMA@##1{\csname ##1\endcsname}% unuseful with ECM .......  \minMAJ
%
% (Leslie says:  "... counters are referencable, footnote counters are not.")
% Now we can. A facility to be added in future LaTeX releases I hope.
\@ifundefined{refmark}% stands for \footnotemark[\ref{...}] .......... \refmark
            {\def\refmark##1{\ifFTY\ifhmode% unskip last space
                                    \ifdim\lastskip>\z@\unskip\fi\fi\fi%
                             \hbox{% following patch due to NFSS2:
\ifx\DeclareFontShape\undefined\else\let\bf\mathbf\fi%\bf is used in  \ref! 
                                   $^{\,\ref{##1}}$}}}{}%....}%
%
\def\!{\relax\ifFMA\ifmmode%
                           \mskip-\thinmuskip\else\negthinspace\fi%......... \!
             \else\@ntsORI\fi}%
\@ifundefined{moretolerance}{\def\moretolerance{%..............  \moretolerance
              \advance\tolerance by \the\tolerance% double each tolerance
              \advance\pretolerance by \the\pretolerance}}{}%
\@ifundefined{I}{\def\I{I}}{}% to uppercase \i  ...........................  \I
   \def\Sauter##1Lignes{\vspace*{##1\baselineskip}}%............ \Sauter#Lignes
              }% end of \@ifm
%%%%% Logo symbolisant tous les TeX ... avec lequel le French marche !
\@ifundefined{AllTeX}{%...............................................  \AllTeX
\def\AllTeX{\protect\p@alltex}%
\def\p@alltex{{\@ifundefined{small}{\def\sm@ller{\sc}\def\upC{}}%
                                   {\def\upC{\uppercase}}%
               (L\kern-.36em\raise.3ex\hbox{\sm@ller\upC{a}}\kern-.15em)%
               T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}%
                     }{}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\let\@currname\@currnameORI% reset current package name
\def\beginlanguage{%........\beginlanguage might be used after \begin{document}
                   \ifx\babel@savevariable%selectlanguage
                        \undefined\french%
                   \else\endenglish\selectlanguage{french}\fi
}%
\edef\beginFWdirection{L}% write Left to right
\ifLPLAIN% it will be the case in lplain format.
              \ifx\undefined\babel@core@loaded\else% special case Babel
     \PackageInfo{french}{Initialisation de l'option \frenchname{} pour Babel}%
                   \GOfrench\let\GOfrench\relax%
              \fi%
\else% if outside any high level format having a cs \document
     \expandafter\ifx\csname document\endcsname\relax%
                      \GOfrench%then switch directly to French environnement
                      \let\GOfrench\undefined% release memory
                 \fi% 
\fi% REMember that \french is equal to \frenchTeXmods PLUS hyphen. stuff.
\resetat%........................................................ reset @ char 
% The following is to bypass a wrong change in 209 emulation.
% Some commands are now wrongly defined by \newcommand.
\ifx\documentclass\undefined\else% reset already 209 defined commands
              \ifx\undefined\babel@core@loaded% dont do it for Babel
    {\makeatletter\global\let\l@chapter=\undefined}%
    \let\contentsname\undefined%
    \let\listfigurename\undefined%
    \let\listtablename\undefined%
    \let\bibname\undefined%
    \let\indexname\undefined%
    \let\figurename\undefined%
    \let\tablename\undefined%
    \let\partname\undefined%
    \let\chaptername\undefined%
    \let\appendixname\undefined%
              \fi%
\fi%
\endinput% replace by \pmfrench% for any transmission of Poor-Man-French style.
